【问题标题】:Finding out subclass type of an instance declared as a superclass找出声明为超类的实例的子类类型
【发布时间】:2010-10-30 08:18:16
【问题描述】:

假设我有超类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()。 =/

【问题讨论】:

    标签: c# oop types


    【解决方案1】:

    Console.WriteLine(_a1.GetType());

    GetType 可以返回变量的运行时类型,与声明类型无关。

    【讨论】:

      【解决方案2】:

      您可以使用 GetType() 方法:

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

      【讨论】:

        【解决方案3】:

        对于第一个 - 只需使用 _a1.GetType()_a2.GetType()。第二个-“最低子类类型”是什么意思;或:您期望得到什么答案...(这可能有助于我们理解您的意思...)

        【讨论】:

          【解决方案4】:

          任何对象上的GetType() 总是给你真正的对象类型,而不是超类的类型。如果您使用“new subclass()”创建子类的实例,那么“subclass”就是对象的类型。

          调用 GetType() 即可满足您的需要。

          【讨论】:

            猜你喜欢
            • 2017-01-10
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2011-08-25
            • 1970-01-01
            • 1970-01-01
            • 2018-04-16
            相关资源
            最近更新 更多