我试图弄清楚如何有一个简短的单行条件语句。
如果此日期不为空,则将过滤器添加到当前过滤器列表中:
fromDt ?? filters.Add(FilterType.DateFrom, fromDt);
有没有办法做到这一点?我知道我能做到。。
(fromDt != null) ? "something" : "something_else"
,但我不需要'else',并且真的很想使用??
运算符进行空检查。
我试图弄清楚如何有一个简短的单行条件语句。
如果此日期不为空,则将过滤器添加到当前过滤器列表中:
fromDt ?? filters.Add(FilterType.DateFrom, fromDt);
有没有办法做到这一点?我知道我能做到。。
(fromDt != null) ? "something" : "something_else"
,但我不需要'else',并且真的很想使用??
运算符进行空检查。
这有什么问题?
if (fromDt != null) filters.Add(FilterType.DateFrom, fromDt);
首先,您的代码应该是可读的。即使您的??
代码有效,我也不知道它在第一眼看到它的作用。
您正在尝试的代码使您的代码非常难以阅读。就像BrokenGlass所说,您正在用清晰度来换取原始字符数。
这是 C# 支持的唯一“单行”解决方案。
if (fromDt != null) filters.Add(FilterType.DateFrom, fromDt);
但我鼓励每个人将其扩展到至少两行(我的偏好是四行带大括号)。
撇开解决方案的目的不谈,在使用??
. 不过不要在家里尝试这个。
filters.Add(FilterType.DateFrom, fromDt ?? DateTime.MinValue)
这个想法是将 DateFrom 设置为最小可能值,本质上是添加一个开放过滤器。