gpt4 book ai didi

c# - 继承与收藏

转载 作者:太空宇宙 更新时间:2023-11-03 15:46:14 24 4
gpt4 key购买 nike

我有一个继承问题。
我从类似于以下内容开始:

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();
}
...
}

它有效..我可以调用 NumPasesPositivos() 并获得列表 pases 中具有正利润的 pases 的数量。

现在,我必须编写两个类似的类,如 Popt 和 Opt...并使用继承:

abstract public class P
{
...
...
}

public class POpt: P
{
...
private decimal profit;
public decimal Profit
{
get { return profit; }
}
...
}

public class PBt: P
{
...
...
}

还有:

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 中的列表可以是 POpt 或 PBt 类列表。问题是现在,我不能使用 NumPasesPositivos,因为 pases 可以是 POpt 或 PBt,而 Profit 在 PBt 中没有定义,我不能转换
将 OPt 传递到类似 (List pases).Where(o => o.Profit > 0).Count() ....我不确定如何解决问题也不知道如何重写类......

最佳答案

您可以使用 OfType扩展方法并限制为可以转换为 POpt 的类型。

public int NumPasesPositivos()
{
return pases.OfType<POpt>().Where(o => o.Profit > 0).Count();
}

关于c# - 继承与收藏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28006579/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com