加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c# – 什么时候是obj.GetType().IsInstanceOfType(typeof(MyClas

发布时间:2020-12-16 00:21:10 所属栏目:百科 来源:网络整理
导读:我正在看别人写的这段代码,我想知道它什么时候会评估为真.基本上,它说someType是someOtherType的一个实例.它甚至有意义吗?到目前为止,我已经尝试过: derivedClass.GetType().IsInstanceOfType(typeof(BaseClass)) baseClass.GetType().IsInstanceOfType(ty
我正在看别人写的这段代码,我想知道它什么时候会评估为真.基本上,它说someType是someOtherType的一个实例.它甚至有意义吗?到目前为止,我已经尝试过:

derivedClass.GetType().IsInstanceOfType(typeof(BaseClass)) 

baseClass.GetType().IsInstanceOfType(typeof(DerivedClass)) 

myClass.GetType().IsInstanceOfType(typeof(MyClass))

并且所有人都评价为假.

任何帮助表示赞赏.

解决方法

只有当涉及的对象(derivedClass,baseClass和myClass)是对象的实例或未记录的RuntimeType对象(注意 Type是抽象的)时,这3行中的每一行都将返回true,因此例如以下将导致true声明:

var myObject = new object();
myObject.GetType().IsInstanceOfType(typeof(Console));

myObject = typeof(Object);
myObject.GetType().IsInstanceOfType(typeof(Console));

请注意,使用的类型(在本例中为Console)无关紧要,并且对语句的结果没有影响.

为什么?

IsInstanceOfType的文档告诉我们,如果传入的对象是当前类型的实例,它将返回true,例如,如果myForm是一个派生自Form的类,则以下语句将返回true,否则它将返回false.

typeof(Form).IsInstanceOfType(myForm);

在你的情况下,myForm实际上是typeof(BaseClass),它是未记录的类型RuntimeType(派生自Type),因此如果这个未记录的类型恰好从提供的类型派生,你只会返回true – 这是不太可能是理想的行为.

我应该用什么呢?

您可能会追溯的是is keword,如果提供的对象是给定类型的实例,则返回true

derivedClass is BaseClass
baseClass is DerivedClass
myClass is MyClass

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读