http://msdn.microsoft.com/zh-cn/library/system.typecode(v=VS.80).aspx
我的理解是
Type当然已经表达了对象的类型.但是,如果你要根据类型执行不同的操作时,如何比较呢?
若直接使用Type,你比较的目标也应该是个Type,你还需要通过new一个对象获取Type或者typeof类型获取Type。然后执行对象间的比较。
但使用TypeCode枚举,就容易多了。就是整数之间的比较。效率会更高。
我的理解是
Type当然已经表达了对象的类型.但是,如果你要根据类型执行不同的操作时,如何比较呢?
若直接使用Type,你比较的目标也应该是个Type,你还需要通过new一个对象获取Type或者typeof类型获取Type。然后执行对象间的比较。
但使用TypeCode枚举,就容易多了。就是整数之间的比较。效率会更高。
谢谢,我的理解是,既然一个class只有一个TypeCode,能为什么GetTypeCode不是一个静态方法? 需要获得一个类的TypeCode,还是需要一个实例来调用啊。
比如说,我就不能sbyte.GetTypeCode(),而必须new sbyte().GetTypeCode()才行。这不就是Type一样了吗,需要通过new一个对象来获得。
还请指教!
谢谢,我的理解是,既然一个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
{ }
你说的Type.GetTypeCode(typeof(sbyte))这个需要有运行时的开销吧,需要从Type来计算我的问题是,为什么没有sbyte.GetTypeCode(),而必须要求有实例new sbyte().GetTypeCode()
这是让我感觉很奇怪的地方。
你说的Type.GetTypeCode(typeof(sbyte))这个需要有运行时的开销吧,需要从Type来计算我的问题是,为什么没有sbyte.GetTypeCode(),而必须要求有实例new sbyte().GetTypeCode()
这是让我感觉很奇怪的地方。如果已经明确知道了编译时类型是sbyte,还调用GetTypeCode()干什么用呢?