日期:2014-05-18  浏览次数:20781 次

声明父亲,实例儿子的GetType()
C# code

//类
    public class Father
    {
    }
    public class Child1:Father
    {
    }
    public class Child2:Father
    {
    }


当声明 
Father f1,c1,c2;
f1=new Father();
c1=new Child1();
c2=new Child2();
这三个变量的Type 各是什么,为什么。

望达人解答!

------解决方案--------------------
gettype()是object类一虚方法,获取当前实例的类型.
f1.gettype()==typeof(father);
c1.gettype()==typeof(child1);
c2......
------解决方案--------------------
探讨
gettype()是object类一虚方法,获取当前实例的类型.
f1.gettype()==typeof(father);
c1.gettype()==typeof(child1);
c2......

------解决方案--------------------
GetType()是object类的一个实例方法,不是虚方法
C# code
[MethodImpl(MethodImplOptions.InternalCall)]
public extern Type GetType();

------解决方案--------------------
GetType()方法是非虚方法,为的是防止一个类重写该方法,并隐藏其类型,从而破坏类型安全性。所以一楼在胡扯。
------解决方案--------------------
不会因为c1,c2是Father的引用,而使得GetType也得到Father
比如object obj=5;
GetType会得到int,而不是object
------解决方案--------------------
你可以看看msdn上object类中关于gettype方法的说明,看看它的功能到底是什么就明白了
------解决方案--------------------
探讨
GetType()方法是非虚方法,为的是防止一个类重写该方法,并隐藏其类型,从而破坏类型安全性。所以一楼在胡扯。

------解决方案--------------------
看看~~~
------解决方案--------------------
探讨
GetType()方法是非虚方法,为的是防止一个类重写该方法,并隐藏其类型,从而破坏类型安全性。所以一楼在胡扯。