c# – 什么时候是obj.GetType().IsInstanceOfType(typeof(MyClass))是真的吗?

c# – 什么时候是obj.GetType().IsInstanceOfType(typeof(MyClass))是真的吗?,第1张

概述我正在看别人写的这段代码,我想知道它什么时候会评估为真.基本上,它说someType是someOtherType的一个实例.它甚至有意义吗?到目前为止,我已经尝试过: derivedClass.GetType().IsInstanceOfType(typeof(BaseClass)) baseClass.GetType().IsInstanceOfType(typeof(DerivedClas @H_419_4@ 我正在看别人写的这段代码,我想知道它什么时候会评估为真.基本上,它说someType是someOtherType的一个实例.它甚至有意义吗?到目前为止,我已经尝试过:

derivedClass.GetType().isinstanceOfType(typeof(BaseClass)) baseClass.GetType().isinstanceOfType(typeof(DerivedClass)) myClass.GetType().isinstanceOfType(typeof(MyClass))

并且所有人都评价为假.

任何帮助表示赞赏.

@H_419_4@解决方法 只有当涉及的对象(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 BaseClassbaseClass is DerivedClassmyClass is MyClass
@H_419_4@ @H_419_4@ @H_419_4@ @H_419_4@ 总结

以上是内存溢出为你收集整理的c# – 什么时候是obj.GetType().IsInstanceOfType(typeof(MyClass))是真的吗?全部内容,希望文章能够帮你解决c# – 什么时候是obj.GetType().IsInstanceOfType(typeof(MyClass))是真的吗?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/langs/1223574.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-06-05
下一篇2022-06-05

发表评论

登录后才能评论

评论列表(0条)

    保存