Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby-on-rails-4/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何检查类是否属于某种类型,而忽略继承?_C# - Fatal编程技术网

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原则,包括替换原则,该原则规定您应该能够在使用父类的每个地方使用子类的实例