Linq to sql 十进制和十进制数值之间的差异?

Linq to sql 十进制和十进制数值之间的差异?,linq-to-sql,Linq To Sql,在访问LINQtoSQL对象时,我经常需要调用Value属性来检查空值,否则会出现异常。有人能解释一下这些数据类型(如decimal?,bool?,等等),它们似乎包装了基本类型。decimal?是缩写(相当于)null,这意味着它可以设置一个值null。这同样适用于bool?,int?等 当数据库字段允许空值时,这些值由Linq 2 SQL选择。否则,您将无法指示这些值应为null它们是可为null类型的泛型,并且它们确实包装了基元类型 为什么他们发明了缩写形式int?is Nullable似

在访问LINQtoSQL对象时,我经常需要调用Value属性来检查空值,否则会出现异常。有人能解释一下这些数据类型(如decimal?,bool?,等等),它们似乎包装了基本类型。

decimal?
是缩写(相当于)
null
,这意味着它可以设置一个值
null
。这同样适用于
bool?
int?


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

它们是
可为null
类型的泛型,并且它们确实包装了基元类型

为什么他们发明了缩写形式int?is Nullable似乎是基于C语言的开发人员难以解决的简洁与简洁之间的标准混淆

decimal? total = null;
total.HasValue
将返回false,它不会以空引用爆炸

但是
total.Value.ToString()
将引发异常,因为total的
属性为null

和HasValue属性是只读的

total = 10;
表示total.Value将返回10.0,total.HasValue将返回true

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

可能重复的