http://msdn.microsoft.com/zh-cn/library/system.typecode(v=VS.80).aspx
我的理解是
Type当然已经表达了对象的类型.但是,如果你要根据类型执行不同的操作时,如何比较呢?
若直接使用Type,你比较的目标也应该是个Type,你还需要通过new一个对象获取Type或者typeof类型获取Type。然后执行对象间的比较。
但使用TypeCode枚举,就容易多了。就是整数之间的比较。效率会更高。

解决方案 »

  1.   


    谢谢,我的理解是,既然一个class只有一个TypeCode,能为什么GetTypeCode不是一个静态方法? 需要获得一个类的TypeCode,还是需要一个实例来调用啊。
    比如说,我就不能sbyte.GetTypeCode(),而必须new sbyte().GetTypeCode()才行。这不就是Type一样了吗,需要通过new一个对象来获得。
    还请指教!
      

  2.   

    楼主也看花眼了,这里没要对象实例Type.GetTypeCode(Type type);
      

  3.   


    谢谢,我的理解是,既然一个class只有一个TypeCode,能为什么GetTypeCode不是一个静态方法? 需要获得一个类的TypeCode,还是需要一个实例来调用啊。
    比如说,我就不能sbyte.GetTypeCode(),而必须new sbyte().GetTypeCode()才行。这不就是Type一样了吗,需要通过new一个对象来获得。
    还请指教!
    呵呵。这个问题我也不是很清楚。如果是静态方法,则所有类型、结构、类都应该具有该方法。但事实上只有Type对象和事例具有此方法。
    private void button_Click(object sender, EventArgs e)
    {
        MessageBox.Show(Type.GetTypeCode(typeof(SByte)).ToString());
        MessageBox.Show(Type.GetTypeCode(typeof(c)).ToString());
        MessageBox.Show(Type.GetTypeCode(typeof(s)).ToString());
    }
    使用上面的方式,不需要初始化目标类型本身。Typeof可直接从类型获取Type对象。
    另外,TypeCode只给出类或对象的基本类型。例如所有Class和Struce都是Object。
            class c 
            { }
            struct s
            { }
      

  4.   


    你说的Type.GetTypeCode(typeof(sbyte))这个需要有运行时的开销吧,需要从Type来计算我的问题是,为什么没有sbyte.GetTypeCode(),而必须要求有实例new sbyte().GetTypeCode()
    这是让我感觉很奇怪的地方。
      

  5.   


    你说的Type.GetTypeCode(typeof(sbyte))这个需要有运行时的开销吧,需要从Type来计算我的问题是,为什么没有sbyte.GetTypeCode(),而必须要求有实例new sbyte().GetTypeCode()
    这是让我感觉很奇怪的地方。如果已经明确知道了编译时类型是sbyte,还调用GetTypeCode()干什么用呢?
      

  6.   

    你的意思是,容器存储object的时候,用GetTypeCode找回类型信息()? 但是系统默认的TypeCode只涵盖了基本的数据类型啊,其他的都是Object,没法进一步区分是哪种Object.那我的类能否自己定义或者覆盖GetTypeCode()函数呢?