输入Casting Exception

Asi*_*jad 4 c#

为什么声明

(int)"84"
Run Code Online (Sandbox Code Playgroud)

抛出异常并且

Convert.ToInt32("84")
Run Code Online (Sandbox Code Playgroud)

不抛出异常?

Ant*_*lev 8

第一个是普通的转换,它正在改变一个对象的类型(从技术上讲,这不是转换,而是类型转换)..NET的确允许一些转化(如intlong,等等),但这个特殊的是不允许的.我认为这是不允许的原因是因为只有一小部分字符串可以实际转换为,int并且这样做的规则将非常麻烦.此外,这可能不适合国际化.

第二个是方法调用,它实际解析整数的字符串表示并构造一个整数int.