0

任何人都可以帮助我理解decimaldecimal?int和之间的区别int?吗?

我什么时候应该使用它们以及使用它们中的任何一个有什么好处。

4

4 回答 4

14

带有 ? 的数据类型 是可为空的类型。它们也可以保存空值
查看此源链接

  • 可空类型表示可以分配空值的值类型变量。您不能基于
    引用类型创建可为空的类型。(引用类型已经支持空值。)
  • 语法 T? (在 C# 中)是 System.Nullable 的简写,其中 T 是值类型。这两种形式可以互换。
  • 以与普通值类型相同的方式将值分配给可空类型,例如:C#:int? x = 10; or double? d = 4.108;

    VB.NET:Dim x As Nullable(Of Integer) = 10Dim 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;
于 2012-04-12T17:08:17.183 回答
6

?类型描述它可以为空。int?and是anddecimal?的简写。Nullable<int>Nullable<decimal>

这允许变量保持其类型或空值。

于 2012-04-12T17:09:30.253 回答
1

这 ?form 只是意味着它是一个可为空的值类型。Nullable<decimal>这是or的快捷方式Nullable<int>。当您希望能够指示没有为该变量分配值时,是使用它的好时机。

于 2012-04-12T17:10:15.503 回答
0

一个用例是如果你有类似 a 的东西,DateTime并且你想表明你还没有给它赋值。您可以将其设置为 null,而不是将其设置为 01/01/1970 之类的“魔术日期”。更直接!

于 2012-04-12T17:15:53.230 回答