0

在访问我的 Linq to SQL 对象以检查空值或出现异常时,我经常必须调用 Value 属性。有人可以解释这些似乎包装原始类型的数据类型(即十进制?,布尔?等......)?

4

2 回答 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();会抛出异常,因为Valuetotal的属性为null。

Value和 HasValue 属性是只读的。

total = 10;

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

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

于 2012-08-29T22:21:48.473 回答