我觉得你说得挺对的。MSDN上说:Gets the Type of the current instance.关键是the current instance. [解决办法] 对于常用的控件,基本都有五六层的继承,但无论有多少层,this 作为实例肯定只有一个。 base 其实与类无关,只是方便调用基类的方法的一种语法,以前 C++ 时要用【基类类名::方法名】调用的。 [解决办法]
在你讨论问题的时候,一定要分清概念和实现。从实现上说,肯定一个继承的类型包含了基类的所有信息的存储。但是无论什么OOP语言,都不会出现继承的类中还套着一个基类这样的概念。 [解决办法] public class BaseClass { protected object o = 1; public virtual void Print() { Console.WriteLine(o.GetType()); Console.WriteLine(this.GetType().FullName); Console.WriteLine("BaseClass Print"); }
} public class DirClass : BaseClass { new object o = "2"; public override void Print() { base.Print(); Console.WriteLine(o.GetType()); Console.WriteLine(base.o.GetType());//注意这里~!可以指向父类的成员,但为什么base.GetType()是指向当前,我也不知道了~ Console.WriteLine("DirClass Print"); } }
public class BaseClass { protected object o = 1; public virtual void Print() { Console.WriteLine(o.GetType()); Console.WriteLine(this.GetType().FullName); Console.WriteLine("BaseClass Print"); } } public class DirClass : BaseClass { new object o = "2"; public override void Print() { base.Print(); Console.WriteLine(o.GetType()); Console.WriteLine(base.o.GetType());//注意这里~!可以指向父类的成员,但为什么base.GetType()是指向当前,我也不知道了~