在我们的应用程序的深度中,有人试图使用Convert.ChangeType(value, castType)执行从字符串到可空int的转换。在这种情况下,值如下:
value: "00010"
castType: Nullable<System.Int16>问题是我收到了以下错误
Invalid cast from 'System.String' to 'System.Nullable`1[[System.Int16}我(显然是错误的)认为这类似于cast或Convert.ToInt16(),但是通过测试以下两行代码,我已经证实了这是不一样的。
Int16 t = Convert.ToInt16("00010");
object w = Convert.ChangeType("00010", typeof(short?));正如您可能怀疑的,第一个成功,而第二个失败与上面的错误消息。
是否可以通过调整来以这种方式使用ChangeType,还是应该考虑重构?
发布于 2016-11-13 01:53:07
你需要写这样的东西:
var value = "00010";
short? w = value == null ? null : (short?)Convert.ChangeType("00010", typeof(short));ChangeType将不适用于Nullable<T> -如果我们有value的值,我们假设我们有一个转换类型的值。
发布于 2016-11-13 01:52:26
ChangeType(Object, Type)方法可以将可空类型转换为另一种类型。但是,不能将另一种类型转换为可空类型的值,即使conversionType是Nullable<T>的基础类型。要执行转换,可以使用强制转换操作符(在C#中)或转换函数(在Visual中)。
所以,试着:
var w = (short?)Convert.ChangeType("00010", typeof(short));https://stackoverflow.com/questions/40569702
复制相似问题