为什么Convert.ToInt32(Byte)和Convert.ToInt32(Byte [])都编译,但Convert.ToInt32(byte [])抛出运行时异常?

时间:2014-03-06 03:55:54

标签: c# compiler-construction visual-studio-2013 bytearray

每当我使用Convert.ToInt32(byte[])时,我都会得到一个invalidcastexception,并且想知道我是否做错了,如果这是众所周知的事情。

为什么在此方法中没有支持byte []的重载时,byte []不会抛出编译器错误?

2 个答案:

答案 0 :(得分:4)

因为overloadobject作为参数而byte[]object。这就是为什么你没有得到编译时错误的原因。并且Byte[]无法转换为Int32,这就是运行时异常的原因。

  

InvalidCastException :value未实现IConvertible接口。   -要么-   不支持转换。

相反,您需要使用BitConverter.ToInt32方法将字节数组转换为Int32

答案 1 :(得分:2)

您无法使用byte[]Convert.ToInt32转换为int。 您需要use a BitConverter

不同之处在于BitConverter的构建完全符合您的要求:获取字节数组并将其转换为整数表示形式。 Convert.Int32用于转换已经是整数的任何内容,或者可以使用IConvertible接口转换为整数。

Convert只能用于实现IConvertible接口的类型。