代码之家  ›  专栏  ›  技术社区  ›  Nikhil

什么是加倍?C均值?[复制品]

c#
  •  20
  • Nikhil  · 技术社区  · 14 年前

    可能重复:
    C# newbie: what’s the difference between “bool” and “bool?” ?

    你好, 在阅读nunit项目的assert类的代码时,我遇到了这个特殊的构造-

    public static void AreEqual(double expected, double? actual, double delta)
    {
         AssertDoublesAreEqual(expected, (double)actual, delta ,null, null);
    }
    

    在此函数中,第二个输入参数输入为 double? . 有趣的是,这段代码在VS2010(C 4.0)中编译时没有问题。 有人知道为什么这不会引发错误吗?为什么是 双倍? 被认为是有效的关键字,对 ? .

    4 回复  |  直到 14 年前
        1
  •  25
  •   Gorpik    14 年前

    double? 只是 Nullable<double> 基本上,A double 那可以 null . 但是这个代码并不十分安全。如果 actual 无效的 , (double)actual 将引发异常。

        2
  •  7
  •   Hans Olsson    14 年前

    它是可以为空的类型。所以它是一个双精度数,也可以为空。

    here 更多信息。

        3
  •  3
  •   Sir Graystar    14 年前

    我相信这意味着参数也可以称为空。

        4
  •  3
  •   Richard    14 年前

    语法T?是System.Nullable的缩写。 下面的代码行声明了可为空的类型。

    double? actual =null;

    不能将空值赋给.NET值类型(结构),包括C基元类型(如int和double),因此在.NET 2.0中,添加了可空类型的概念以赋空值。

    例如:

    int? num = null;
            if (num.HasValue == true)
            {
                System.Console.WriteLine("num = " + num.Value);
            }
            else
            {
                System.Console.WriteLine("num = Null");
            }