双重的是什么?在C#中意味着什么?

Nik*_*hil 20 c#

可能重复:
C#newbie:"bool"和"bool"之间有什么区别?

嗨,在阅读NUnit项目的断言类的代码时,我遇到了这个特殊的构造 -

public static void AreEqual(double expected, double? actual, double delta)
{
     AssertDoublesAreEqual(expected, (double)actual, delta ,null, null);
}
Run Code Online (Sandbox Code Playgroud)

在此函数中,输入第二个输入参数double?.有趣的是,这段代码在VS2010(C#4.0)中编译没有问题.任何人都知道为什么这不会引发错误?为什么被double?认为是有效的关键字,并且对此有任何特殊意义?.

Gor*_*pik 25

double?只是简写Nullable<double>; 基本上,一个double可以null.但代码不是很安全.如果actualnull,(double)actual将抛出异常.

  • +1 表示有关“InvalidOperationException”的警告。 (2认同)

Han*_*son 7

这是一个可以为空的类型.所以这是一个双倍也可以为空.

有关详细信息,请参见此处