【发布时间】:2023-03-22 06:34:01
【问题描述】:
假设我有一个类 Animal,以及几个子类,Dog、Cat、Bird 等。
现在我有一个人,他有一个动物。她想看看宠物店有没有同类型的动物。
所以我有:
Animal sampleAnimal;
List<Animal> listOfAnimals; // in our hypothetical pet store
当我尝试这样做时(在 C# 3.5 中):
Type typeWeWant = sampleAnimal.GetType();
foreach (var x in listOfAnimals) {
if (x is typeWeWant) { // error here
return true;
}
}
我收到错误“typeWeWant 是一个变量,但用作类型。”
好的。我该怎么做?
请记住,我们的 Person 可能有一个 CalicoCat,它是 Cat 的子类,它应该与 Cat 匹配。所以使用 GetType.ToString() 是行不通的。 (在我的情况下,宠物并不完全是发生的事情 - 如果编写的代码有效,我会没事的。我不需要同时测试两种方式。)
如果已经有人问过这个问题,我深表歉意,但我能找到的只是关于泛型的问题,这里的情况并非如此。
编辑:非常感谢您的回答和“重复”链接!这些正是我需要但找不到的!
【问题讨论】:
-
要重现您的代码,如果您可以添加更多代码,将会很有帮助。
-
你在if to do
x.GetType()中试过了吗?编辑:我认为您在 C# 3.5 中尝试做的事情是不可能的