如果在属性的 setter 中有这个:
decimal? temp = value as decimal?;
值 = "90"
但是在转换之后,temp 是null...
进行此转换的正确方法是什么?
最佳答案
只有类型相同才能拆箱!您不能对不包含目标值的 object
进行拆箱。您需要的是符合以下内容的内容
decimal tmpvalue;
decimal? result = decimal.TryParse((string)value, out tmpvalue) ?
tmpvalue : (decimal?)null;
这会检查该值是否可以解析为 decimal
。如果是,则将其赋值给result
;否则分配 null
。以下代码的作用大致相同,对于不熟悉条件运算符 ?:
的人来说可能更容易理解:
decimal tmpvalue;
decimal? result = null;
if (decimal.TryParse((string)value, out tmpvalue))
result = tmpvalue;
关于c# - 将对象转换为十进制? (可为空的十进制),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/527453/