c# - 将对象转换为十进制? (可为空的十进制)

标签 c# .net casting nullable

如果在属性的 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/

相关文章:

c# - 如何在C#中创建带有特殊字符的字符串

.net - 两个 SELECTS,一个查询

c# - 复制大文件时更新进度条

c# - EF 不在数据库级别执行 where 子句

c++ - 为什么 C++ 将表达式中的 signed int 转换为 unsigned int?

C# 重载 IEnumerable Key/Value 类型和非 Key/Value

c# - 如何使用 .net 匹配 Unicode 字符?

c# - ASP.NET - 检查开发机器或服务器

c# - 国家类型转换 : List<Country>

c++ - C++ 中 vector push_back 操作的类型转换