检查多态对象的类型

时间:2015-09-23 03:21:13

标签: c# polymorphism

在C#中,如果我有一个多态对象,我怎样才能确定对象的类型,而不检查基类型?

以下是一个例子:

class object1 : object2
{

}

testObject = new object1();

以下两行代码都返回true:

bool test1 = testObject is object1;
bool test2 = testObject is object2;

如何进行检查以使test2返回false?

4 个答案:

答案 0 :(得分:8)

bool test2 = testObject.GetType() == typeof(object2);

答案 1 :(得分:1)

user3736648,你得到了答案,怎么做,但遗憾的是没有人告诉你,为什么你的版本没有用。

关键字试图回答,实例是object2还是有一个,由object1继承,所以答案在你的两行都是正确的测试,因为您可以像这样分配:

object2 obj = testObject;

obj只是缺少object1的方法/属性, 但基类,继承类,object2实例就在那里。

类似于关键字

bool test3 = (testObject as object1) != null;//true
bool test4 = (testObject as object2) != null;//true

最后,为什么GetType有效?它基于反思和 它不会尝试使用继承,只是结果类型。

答案 2 :(得分:-1)

用于验证此

if(obj是MyObject) {

}

https://msdn.microsoft.com/en-us/library/scekt9xw.aspx

答案 3 :(得分:-3)

 var testObject = new object2();

 bool test1 = testObject is object1;