在C#中,double是什么意思?

20

可能是重复问题:
C#新手: "bool" 和 "bool?" 的区别是什么?

你好, 在阅读 NUnit 项目的断言类的代码时,我遇到了这种特定的结构 -

public static void AreEqual(double expected, double? actual, double delta)
{
     AssertDoublesAreEqual(expected, (double)actual, delta ,null, null);
}
在这个函数中,第二个输入参数被输入为 double? 类型。有趣的是,在 VS2010(C# 4.0)中,这段代码编译时没有出现任何问题。请问为什么不会抛出错误?为什么 double? 被认为是一个有效的关键字?? 有什么特殊的意义吗?

1
请参阅C#新手:bool和bool?有什么区别? - Matthew Flaschen
5
别再给那个人投负分了,他提出了一个有效的问题,对于不了解可空运算符的人来说很难找到答案。只需将此问题标记为重复即可,不需要关闭。 - Diadistis
2
这些踩票怎么回事?问号后缀不太友好于搜索引擎。 - cfern
4个回答

25

double?Nullable<double> 的简写,基本上是可以为 nulldouble 类型。但代码不够安全。如果 actualnull,那么将 actual 转换为 (double)actual 将会抛出异常。


2
+1 针对 InvalidOperationException 警告的警告。 - Steven

7

这是一个可空类型。因此,它是一个可以为空的双精度浮点数。

更多信息请参见这里


3

语法T?是System.Nullable的简写。

以下代码声明了可空类型:

double?actual = null;

在.NET值类型(结构体)中,包括C#原始类型如int和double,您不能分配null值,因此在.NET 2.0中引入了可空类型的概念来分配null值。

例如:

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

3
我相信这意味着该参数也可以称为null。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接