c# - 如何在C#中检查double值是否为null?

标签 c#

我有一个Test方法,它接受x作为可选参数。 X可以接受正,负和零值。
我需要检查double是否为null,然后打印x的值,否则,如果double值为null,则打印其null。
由于double的默认值为0,并且double不能分配为null,所以我该怎么做?

public static void Test([Optional] double x)
{
           //if x is not null print value of x

            //else print x is null
}
static void main()
{
    Test();-output expected x is null
    Test(5);-output expected x is 5
    Test(0);--output expected x is 0
    Test(-1);-output expected x is -1
}

最佳答案

[Optional]并不意味着如果您的arg不存在,它将自动变成null。相反,它是一个指示符,表示如果未提供参数,则应获取其默认 -value,对于double不是null而是0double不能是null,除非您表示Nullable<double>double?(这是同义词) )。因此,在您的情况下,这两个调用是完全相同的:

Test();
Test(0);

如果要区分传递的arg和零,则应该使用Nullable<double>:
public static void Test([Optional] double? x)
{
    if(x == null)
    {
        Console.WriteLine("null");
    }
    else
    {
        Console.WriteLine("" + x);
    }
}

现在,您可以像Test这样调用它,它将评估为Test(null)

关于c# - 如何在C#中检查double值是否为null?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60522992/

相关文章:

c# - 捕获正在运行的进程的 FlashWindowEx 事件

.net - .net 4.0 中的云计算

c# - 配置文件中的节类型

c# - 如何获取在 TreeView 控件中选择的所有父节点(直到根节点)?

c# - Linq to Sql 内部连接

c# - .NET/C# - 此处使用的正确方法 - LINQ

c# - TreeView 绘制故障

c# - 如何从这种一般情况下获取类型?

c# - Asp .Net Core 中的自定义模型绑定(bind)

c# - 如何将多态对象作为派生对象传递?