在访问我的 Linq to SQL 对象以检查空值或出现异常时,我经常必须调用 Value 属性。有人可以解释这些似乎包装原始类型的数据类型(即十进制?,布尔?等......)?
问问题
309 次
2 回答
1
decimal?
是简写(和等价于)nullable<decimal>
,这意味着它可以设置一个值null
。同样的事情适用于bool?
,int?
等。
当您的数据库字段允许空值时,这些值由 Linq 2 SQL 选择。否则,您将无法指示这些值应为null
.
于 2012-08-29T22:04:13.187 回答
1
它们是 type 的泛型Nullable<T>
,并且它们确实包装了原始类型。
为什么他们发明了短形式 int?is Nullable 似乎归结于简洁和简洁的基于 C 的语言开发人员之间的标准混淆。
decimal? total = null;
total.HasValue
将返回 false,它不会因空引用而崩溃
但total.Value.ToString();
会抛出异常,因为Value
total的属性为null。
Value
和 HasValue 属性是只读的。
total = 10;
表示 total.Value 将返回 10.0 并且 total.HasValue 将返回 true。
这是一个非常好的泛型,特别是对于数据库类型,虽然仍然没有得到简短的形式......
于 2012-08-29T22:21:48.473 回答