我有一个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
而是0
。double
不能是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/