条件语句检查空

时间:2012-04-05 16:31:58

标签: c# c#-4.0 if-statement unary-operator

我正在试图弄清楚如何使用简短的一行条件语句。

如果此日期不为空,请将过滤器添加到当前过滤器列表中:

fromDt ?? filters.Add(FilterType.DateFrom, fromDt);

有办法做到这一点吗?我知道我能做到。

(fromDt != null) ? "something" : "something_else",但我不需要'else',并且真的只想使用??运算符进行空检查。

3 个答案:

答案 0 :(得分:7)

这有什么问题?

if (fromDt != null) filters.Add(FilterType.DateFrom, fromDt);

首先,您的代码应该是可读的。即使您的??代码有效,我也不知道它在第一眼就看到了什么。

答案 1 :(得分:2)

您尝试的代码使您的代码非常难以阅读。就像BrokenGlass所说的那样,你可以清楚地说明原始字符数。

这是C#支持的唯一“一线”解决方案。

if (fromDt != null) filters.Add(FilterType.DateFrom, fromDt);

但我鼓励大家将此扩展到至少两行(我的首选是大括号四个)。

答案 2 :(得分:0)

除了解决方案的目的之外,在使用??之后,使用单行可能会为您提供所需的结束结果。不要在家里尝试这个。

filters.Add(FilterType.DateFrom, fromDt ?? DateTime.MinValue)

我们的想法是将DateFrom设置为最小可能值,实际上是添加一个打开过滤器。