楼上的说错了一点,as, is 才是父类子类转换,()操作符可以自定义的。 楼主的问题很有意思,这里有很长一个故事 ECMA BCL最先是没有Convert类的,而是static转换 int i = 10; Int32.ToDouble(i) 然后,他们觉得如果将来代码改变变量i声明,需要的改动很多代码,于是,想到专门一个类处理这个问题。这个思想来源于OLE中的Variant。 如果说区别,建议是先用(),如果类实现IConvertible,其次用它,最后用Converter。有些语言不支持(),那么只能用Converter类了,例如VB.net中UInt32转换到Int32
楼主的问题很有意思,这里有很长一个故事
ECMA BCL最先是没有Convert类的,而是static转换
int i = 10;
Int32.ToDouble(i)
然后,他们觉得如果将来代码改变变量i声明,需要的改动很多代码,于是,想到专门一个类处理这个问题。这个思想来源于OLE中的Variant。
如果说区别,建议是先用(),如果类实现IConvertible,其次用它,最后用Converter。有些语言不支持(),那么只能用Converter类了,例如VB.net中UInt32转换到Int32