查找声明为超类的实例的子类类型

时间:2009-06-01 06:54:50

标签: c# oop types

假设我有超类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的子级,我如何获得给定代码的最低子类类型?

A _a2_1 = new A2_1();
编辑:谢谢你的回答。真是个嘘声。过度思考问题,甚至没有尝试GetType()。 = /

4 个答案:

答案 0 :(得分:5)

Console.WriteLine(_a1.GetType());

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

答案 1 :(得分:2)

您可以使用GetType()方法:

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

答案 2 :(得分:1)

首先使用_a1.GetType()_a2.GetType()。在第二个 - “最低子类型”是什么意思;或者:你期待什么答案 ......(这可能有助于我们理解你的意思......)

答案 3 :(得分:1)

任何对象上的GetType()总是为您提供真实的对象类型,而不是超类的类型。如果使用“new subclass()”创建子类的实例,则“subclass”是对象的Type。

您可以根据自己的情况调用GetType()。