【发布时间】:2020-04-18 16:56:44
【问题描述】:
我的界面 Packageable 看起来像这样:
public interface Packageable
{
double GetPrice(double modifier);
}
然后我有 4 个类,都继承自 Packageable,唯一的区别是价格。这些是游泳池、健身房、跳舞和台球,它们看起来像这样:
class Billiards : Packageable
{
public double GetPrice(double modifier)
{
double price = 38;
switch (modifier)
{
case 2:
modifier = 0.7;
break;
case 3:
modifier = 0.5;
break;
case 4:
modifier = 0.35;
break;
}
return price * modifier;
}
}
最后,我有一个主类(其中的相关元素)如下所示:
public class People
{
public List<Packageable> Packages = new List<Packageable>();
public List<Packageable> ReturnPackages()
{
return Packages;
}
}
在我的主表单中,我想检查列表 Packages 是否包含其中一个对象。这是我尝试的:
if (people[lbMain.SelectedIndex].ReturnPackages().Contains(SwimmingPool)) {}
但是,由于 SwimmingPool 是一种类型而不是对象,因此 Visual Studio 会引发错误。我试图通过为每个类创建一个对象来解决这个问题,但这也不起作用:
SwimmingPool swimmingpool = new SwimmingPool();
if (people[lbMain.SelectedIndex].ReturnPackages().Contains(swimmingpool)) {}
此代码运行,但从不返回 true。我该如何正确地做到这一点?
【问题讨论】:
-
类似
ReturnPackages().OfType<SwimmingPool>().Any()? -
这里提出了同样的问题:stackoverflow.com/questions/8216881/…
-
@vc74 这行得通!愿意做出完整的答复以更详细地解释它的工作原理吗?这样我也可以选择你的答案!