任何人都可以帮助我了解decimal
和decimal?
或int
和int?
之间的区别吗?
我应该何时使用它们以及使用其中任何一种的积极因素。
答案 0 :(得分:14)
数据类型有?是可以为空的类型。他们也可以保留空值
看看这个Source link
- 可空类型表示可以赋值为null的值类型变量。您无法基于
创建可空类型 参考类型。 (引用类型已经支持null值。)- 语法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;如果变量包含值,则返回false。
- 如果指定了一个值,则Value属性返回一个值,否则抛出System.InvalidOperationException。
- 可空类型变量的默认值将HasValue设置为false。价值未定义。
在C#4.0- 使用?? (C#)运算符指定一个默认值,当默认值为当前值为null的可空类型时,将应用该值 到非可空类型,例如
int? x = null;
int y = x ?? -1;
答案 1 :(得分:6)
类型后面的?
描述它可以为空。 int?
和decimal?
是Nullable<int>
和Nullable<decimal>
的简写。
这允许变量保持其类型或空值。
答案 2 :(得分:1)
? form只是意味着它是一个可以为null的值类型。这是Nullable<decimal>
或Nullable<int>
的快捷方式。使用它的好时机是,当您希望能够指示没有为该变量分配值时。
答案 3 :(得分:0)
一个用例是,如果您有类似DateTime
的内容,并且您想表明尚未为其分配值。您可以将其设置为null,而不是像01/01/1970那样将其设置为“魔术日期”。更直接!