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 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |