区别“十进制”和“十进制”?类型,何时使用它们中的任何一个

时间:2012-04-12 17:07:10

标签: c# nullable

任何人都可以帮助我了解decimaldecimal?intint?之间的区别吗?

我应该何时使用它们以及使用其中任何一种的积极因素。

4 个答案:

答案 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) = 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;如果变量包含值,则返回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那样将其设置为“魔术日期”。更直接!