在我们的应用程序的深处,有一个尝试执行从一个字符串转换为可空的int与Convert.ChangeType(value, castType)
。在这种情况下,值如下:无法将字符串的类型更改为int?
value: "00010"
castType: Nullable<System.Int16>
的问题是,我收到以下错误
Invalid cast from 'System.String' to 'System.Nullable`1[[System.Int16}
我有(显然不正确地)认为这是类似于铸造或Convert.ToInt16 ()但我通过测试以下两行代码验证了它不一样。
Int16 t = Convert.ToInt16("00010");
object w = Convert.ChangeType("00010", typeof(short?));
正如您可能会怀疑的那样,第一次成功,而第二次失败并出现上述错误消息。
是否可以通过调整来使用ChangeType或者我应该查看一个重构?
我最终根据李的信息nk:'Convert.ChangeType(value,Nullable.GetUnderlyingType(castType)?? castType);' – McArthey