2009-06-01 58 views
2

假设我有超类A以及从A继承的子类A1和A2,如何在下面的代码中获取变量的子类型?找出声明为超类的实例的子类型

A _a1 = new A1(); 
A _a2 = new A2(); 
// Need type of A1 and A2 given the variables _a1 and _a2. 

而且,如果我有一个小类A2_1是A2的sublcass,我如何才能给出下面的代码最低的子类型?

A _a2_1 = new A2_1(); 

编辑:谢谢你的答案。什么是嘘声。过度思考问题,甚至没有尝试过GetType()。 =/

回答

5

Console.WriteLine(_a1.GetType());

的GetType可以不管返回声明类型的变量的运行时类型。

1

对于第一个 - 只需使用_a1.GetType()_a2.GetType()。 2日 - “最低分类型”是什么意思;或:什么回答你预计 ...(这可能有助于我们理解你的意思......)

2

你可以使用的GetType()方法:在任何

Type type = _a1.GetType(); 
Type subtype = _a2_1.GetType(); 
1

的GetType()对象总是给你真实的对象类型,决不会是超类的类型。如果使用“new subclass()”创建子类的实例,那么“subclass”是该对象的类型。

调用GetType()是你所需要的所有情况。