This question already has answers here:
How to use Convert.ChangeType() when conversionType is a nullable int
(3个答案)
3年前关闭。
在我们应用程序的深度中,尝试使用
问题是我收到以下错误
我曾经(显然是错误地)相信这与强制转换或Convert.ToInt16()类似,但是我已经通过测试以下两行代码来验证它是否不同。
您可能会怀疑,第一个成功,而第二个失败,并显示上述错误消息。
是否可以通过调整以这种方式使用ChangeType还是应该考虑重构?
(3个答案)
3年前关闭。
在我们应用程序的深度中,尝试使用
Convert.ChangeType(value, castType)
将字符串转换为可为null的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还是应该考虑重构?
最佳答案
您需要编写如下内容:
var value = "00010";
short? w = value == null ? null : (short?)Convert.ChangeType("00010", typeof(short));
ChangeType
不能与Nullable<T>
一起使用-如果我们有value
的值,则假定我们有转换后的类型的值10-08 01:49