【发布时间】:2023-03-16 09:30:01
【问题描述】:
在我们的应用程序的深处,尝试使用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,或者我应该看看重构?
【问题讨论】:
-
我最终根据链接中的信息这样做了:
Convert.ChangeType(value, Nullable.GetUnderlyingType(castType) ?? castType);
标签: c# .net casting type-conversion