在C#中,如果我有一个多态对象,我怎样才能确定对象的类型,而不检查基类型?
以下是一个例子:
class object1 : object2
{
}
testObject = new object1();
以下两行代码都返回true:
bool test1 = testObject is object1;
bool test2 = testObject is object2;
如何进行检查以使test2
返回false?
答案 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)
答案 3 :(得分:-3)
var testObject = new object2();
bool test1 = testObject is object1;