C# 如何检查类是否属于某种类型,而忽略继承?
假设我有一个父类和一个子类,如下所示:C# 如何检查类是否属于某种类型,而忽略继承?,c#,C#,假设我有一个父类和一个子类,如下所示: public class Parent{} var listOfParents = new List<Parent>(); foreach(item in someListOfItems) { if(item is Parent) { listOfParents.Add(item); } } 现在,在某些方法中,我想找到属于父类类型的类,但对子类类型的类不感兴趣。假设我做了这样的事情: public cl
public class Parent{}
var listOfParents = new List<Parent>();
foreach(item in someListOfItems)
{
if(item is Parent)
{
listOfParents.Add(item);
}
}
现在,在某些方法中,我想找到属于父类
类型的类,但对子类
类型的类不感兴趣。假设我做了这样的事情:
public class Parent{}
var listOfParents = new List<Parent>();
foreach(item in someListOfItems)
{
if(item is Parent)
{
listOfParents.Add(item);
}
}
var listOfParents=new List();
foreach(某些项目列表中的项目)
{
如果(项是父项)
{
添加(项目)的当事人名单;
}
}
这将给我所有类型的父类
,但也给我所有类型的子类
,因为它实现了父类
。我如何只检索类型为Parent
的类而忽略所有子类?我还想避免做大量的if
检查,比如if(item是Parent&!(item是Child)
,因为如果有很多类实现Parent,这可能会变得混乱。请使用:
注意,当项
为null
时,这将引发NullReferenceException
,这与添加到GuruStron answer中的is类型检查不同。这也可能会删除null情况
if(item?.GetType() == typeof(Parent))
请注意,虽然这是可能的,但这将违反许多OO原则,包括替换原则,该原则规定您应该能够在使用父类的每个地方使用子类的实例