在访问我的Linq to SQL对象时,我经常需要调用Value属性来检查空值或者我得到一个异常。有人可以说出这些数据类型(即decimal?,bool?等等)似乎包装原始类型?
答案 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。
这是一个非常好的通用,特别是对于数据库类型,但仍然没有得到简短形式...