【发布时间】:2013-09-04 11:26:38
【问题描述】:
在访问我的 Linq to SQL 对象以检查空值时,我经常必须调用 Value 属性,否则会出现异常。有人可以解释一下这些似乎包装原始类型的数据类型(即十进制?、布尔?等...)?
【问题讨论】:
标签: linq-to-sql
在访问我的 Linq to SQL 对象以检查空值时,我经常必须调用 Value 属性,否则会出现异常。有人可以解释一下这些似乎包装原始类型的数据类型(即十进制?、布尔?等...)?
【问题讨论】:
标签: linq-to-sql
它们是Nullable<T> 类型的泛型,它们确实包装了原始类型。
为什么他们发明了短格式 int? is 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。
这是一个非常好的泛型,特别是对于数据库类型,但仍然没有得到简短的形式......
【讨论】:
decimal? 是简写(等效于)nullable<decimal>,这意味着它可以设置一个值 null。 bool?、int? 等也是如此。
当您的数据库字段允许空值时,这些值由 Linq 2 SQL 选择。否则,您将无法指示这些值应为 null。
【讨论】: