区别 “十进制”和“十进制”类型,何时使用它们中的任何一个
本文关键字:十进制 任何一 何时使 类型 区别 | 更新日期: 2023-09-27 18:30:49
谁能帮助我理解decimal
和decimal?
或int
和int?
之间的区别?
我应该什么时候使用它们以及使用它们中的任何一个有什么好处。
带有 ? 的数据类型为可为空的类型。它们也可以
保存空值查看此源链接
- 可为 null 的类型表示可以分配 null 值的值类型变量。不能基于
引用类型。(引用类型已支持 null 值。- 语法 T?(在 C# 中)是 System.Nullable 的简写,其中 T 是值类型。这两种形式是可以互换的。
以与普通值类型相同的方式将值分配给可为 null 的类型,例如: 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 方法返回分配的值或基础类型的默认值,如果 该值为空,例如
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 的可为 null 类型时将应用该默认值 到不可为空的类型,例如
int? x = null;
int y = x ?? -1;
后面的?
描述它是可为空的。 int?
和decimal?
是Nullable<int>
和Nullable<decimal>
的简写。
这允许变量保存其类型或空值。
? 形式只是表示它是一个可为空的值类型。这是Nullable<decimal>
或Nullable<int>
的快捷方式。使用它的好时机是当您希望能够指示没有为该变量分配任何值时。
一个用例是,如果你有像DateTime
这样的东西,你想指示你还没有给它赋值。您可以将其设置为 null,而不是将其设置为"魔术日期"(如 01/01/1970)。更直接!