C# 继承与收藏
我有继承问题。C# 继承与收藏,c#,inheritance,C#,Inheritance,我有继承问题。 我从类似的东西开始: public class POpt { ... private decimal profit; public decimal Profit { get { return profit; } } ... } public class Opt { ... private List<POpt> pases; public int NumPasesPositivos() {
我从类似的东西开始:
public class POpt
{
...
private decimal profit;
public decimal Profit
{
get { return profit; }
}
...
}
public class Opt
{
...
private List<POpt> pases;
public int NumPasesPositivos()
{
return pases.Where(o => o.Profit > 0).Count();
}
...
}
而且:
abstract public class T
{
...
private List<P> pases;
...
}
public class Opt: T
{
...
public int NumPasesPositivos()
{
return pases.Where(o => o.Profit > 0).Count();
}
...
}
public class Bt:T
{
...
...
}
抽象公共类T
{
...
私有列表pases;
...
}
公共类选项:T
{
...
公共int numpasePositives()
{
返回pases.Where(o=>o.Profit>0.Count();
}
...
}
公共类Bt:T
{
...
...
}
现在,T类中的列表可以是POpt或PBt类列表。现在的问题是,我不能使用NumpasePositives,因为PASS可以是POpt或PBt,而利润并没有在PBt中定义,我不能播放pases in OPt to someting like(listpasses)。Where(o=>o.price>0)。Count()…我不知道如何解决问题,也不知道如何重写类…您可以使用扩展方法,并限制可以转换为
POpt
的类型
public int NumPasesPositivos()
{
return pases.OfType<POpt>().Where(o => o.Profit > 0).Count();
}
public int numpasepospositives()
{
返回pases.OfType()。其中(o=>o.Profit>0.Count();
}
旁注-使用带有谓词的Count
重载:返回pases.Count(o=>o.price>0)代码>
public int NumPasesPositivos()
{
return pases.OfType<POpt>().Where(o => o.Profit > 0).Count();
}