c# - C#如何检查接口对象列表是否包含某个对象?
问题描述
我的界面 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。我该如何正确地做到这一点?
解决方案
您可以使用Any
检查类型的 lambda 表达式:
if (people[lbMain.SelectedIndex].ReturnPackages()
.Any(p => p.GetType() == typeof(SwimmingPool)))
{
// do something...
}
推荐阅读
- html - 外部程序中的链接
- codeceptjs - 运行第一个场景后的 CodeceptJS 错误(在每个钩子之后)
- javascript - 过滤数组 - 删除另一个数组中存在的值
- linux - 如何从 dmesg 错误消息中确定 PCIe 插槽号?
- android - 应用程序崩溃并给出“java.lang.NullPointerException”错误
- asp.net - 主域和可信域之间的信任关系失败
- r - R 包应该能够输出到用户的硬盘吗?
- javascript - Javascript不和谐机器人提到用户中间句子
- android - 在 Query 而不是 DatabaseRef 上使用 keepSynced() 有什么不同吗?
- java - Looper.loop 在大约 20% 的情况下被忽略