我正在试图弄清楚如何使用简短的一行条件语句。
如果此日期不为空,请将过滤器添加到当前过滤器列表中:
fromDt ?? filters.Add(FilterType.DateFrom, fromDt);
有办法做到这一点吗?我知道我能做到。
(fromDt != null) ? "something" : "something_else"
,但我不需要'else',并且真的只想使用??
运算符进行空检查。
答案 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设置为最小可能值,实际上是添加一个打开过滤器。