日期:2014-05-19  浏览次数:20779 次

请教一个关于类型转换问题
看如下的一段代码:
public   class   Program
        {
                public   static   void   Main(string[]   args)
                {                
                        ClassTest   a   =   new   ClassTest();
                        BaseClass   b   =   a;                              
                        Console.WriteLine(b.GetType().ToString());    
                        Console.ReadLine();
                }
        }
        public   class   BaseClass{   }
        public   class   ClassTest   :   BaseClass   {   }

如何使b.GetType()得到的类型是BaseClass而不是ClassTest

------解决方案--------------------
public class ClassTest : BaseClass { } 由于他们好比父子关系,b变量会自动转换
------解决方案--------------------
b 指向的是一个new ClassTest()啊,这个是不能更改的

CLR最重要的一个特性就是类型安全。CLR在运行时可以通过调用GetType方法来得到对象的准确类型。因为该方法是一个非虚方法,所以我们不可能利用它来修改一个类型的信息。