如何检查类是否属于某种类型,而忽略继承?

Pal*_*lBo 3 c#

假设我有一个这样的父类和一个子类:

public class Parent{}
Run Code Online (Sandbox Code Playgroud)
public class Child : Parent{}
Run Code Online (Sandbox Code Playgroud)

现在在某些方法中,我想找到 type 的类Parent,但我对 type 的类不感兴趣Child。所以让我们说我做这样的事情:

var listOfParents = new List<Parent>();

foreach(item in someListOfItems)
{
   if(item is Parent)
   {
      listOfParents.Add(item);
   }

} 
Run Code Online (Sandbox Code Playgroud)

这将为我提供所有类型的类Parent,但也会提供所有类型的类Child,因为它实现了Parent. 我怎么能只检索类型的类Parent而忽略所有子类?我也想避免做很多if检查,if (item is Parent && !(item is Child)因为如果有很多类实现Parent.

Gur*_*ron 7

使用GetType

if(item.GetType() == typeof(Parent))
Run Code Online (Sandbox Code Playgroud)

请注意,这将引发NullReferenceException对时itemnull不像类型检查is