任何人都可以帮助我理解decimal
和decimal?
或int
和之间的区别int?
吗?
我什么时候应该使用它们以及使用它们中的任何一个有什么好处。
带有 ? 的数据类型 是可为空的类型。它们也可以保存空值
查看此源链接
- 可空类型表示可以分配空值的值类型变量。您不能基于
引用类型创建可为空的类型。(引用类型已经支持空值。)- 语法 T? (在 C# 中)是 System.Nullable 的简写,其中 T 是值类型。这两种形式可以互换。
以与普通值类型相同的方式将值分配给可空类型,例如:C#:
int? x = 10; or double? d = 4.108;
VB.NET:
Dim x As Nullable(Of Integer) = 10
或Dim d As Nullable(Of Double) = 4.108
使用 System.Nullable.GetValueOrDefault 方法返回分配的值,或者如果值为 null,则返回基础类型的默认值,例如
C#: int j = x.GetValueOrDefault();
VB.NET:
Dim j as Integer = x.GetValueOrDefault()
使用 HasValue 和 Value 只读属性测试 null 并检索值。
- 如果变量包含值,则 HasValue 属性返回 true,如果为 null,则返回 false。
- 如果赋值,则 Value 属性返回一个值,否则抛出 System.InvalidOperationException。
- 可空类型变量的默认值将 HasValue 设置为 false。值未定义。
在 C# 4.0 中- 使用 ??(C#) 运算符分配默认值,当当前值为 null 的可空类型分配
给不可空类型时,将应用该默认值,例如
int? x = null;
int y = x ?? -1;
?
类型描述它可以为空。int?
and是anddecimal?
的简写。Nullable<int>
Nullable<decimal>
这允许变量保持其类型或空值。
这 ?form 只是意味着它是一个可为空的值类型。Nullable<decimal>
这是or的快捷方式Nullable<int>
。当您希望能够指示没有为该变量分配值时,是使用它的好时机。
一个用例是如果你有类似 a 的东西,DateTime
并且你想表明你还没有给它赋值。您可以将其设置为 null,而不是将其设置为 01/01/1970 之类的“魔术日期”。更直接!