如何检查类是否属于某种类型,而忽略继承?
c#
假设我有一个这样的父类和一个子类:
public class Parent{}
public class Child : Parent{}
现在在某些方法中,我想找到 type 的类Parent,但我对 type 的类不感兴趣Child。所以让我们说我做这样的事情:
var listOfParents = new List<Parent>();
foreach(item in someListOfItems)
{
if(item is Parent)
{
listOfParents.Add(item);
}
}
这将为我提供所有类型的类Parent,但也会提供所有类型的类Child,因为它实现了Parent. 我怎么能只检索类型的类Parent而忽略所有子类?我也想避免做很多if检查,if (item is Parent && !(item is Child)因为如果有很多类实现Parent.
回答
使用GetType:
if(item.GetType() == typeof(Parent))
请注意,这将引发NullReferenceException对时item是null不像类型检查is。