decimal和decimal.value之间的区别?

时间:2012-08-29 21:56:19

标签: linq-to-sql

在访问我的Linq to SQL对象时,我经常需要调用Value属性来检查空值或者我得到一个异常。有人可以说出这些数据类型(即decimal?,bool?等等)似乎包装原始类型?

2 个答案:

答案 0 :(得分:1)

decimal?是简写(并且相当于)nullable<decimal>,这意味着它可以设置为null的值。同样的事情也适用于bool?int?等。

当您的数据库字段允许空值时,Linq 2 SQL会选择这些值。否则,您无法指示这些值应为null

答案 1 :(得分:1)

它们是Nullable<T>类型的泛型,它们确实包装了原始类型。

为什么他们发明了短格式? Nullable似乎是基于简洁和简洁的C语言开发人员之间的标准混淆。

decimal? total = null;

total.HasValue将返回false,它不会被空引用

炸毁

但是total.Value.ToString();会抛出异常,因为total的Value属性为null。

Value和HasValue属性是只读的。

total = 10;

表示total.Value将返回10.0,total.HasValue将返回true。

这是一个非常好的通用,特别是对于数据库类型,但仍然没有得到简短形式...