2

我试图弄清楚如何有一个简短的单行条件语句。

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

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

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

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

4

3 回答 3

7

这有什么问题?

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

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

于 2012-04-05T16:34:05.187 回答
2

您正在尝试的代码使您的代码非常难以阅读。就像BrokenGlass所说,您正在用清晰度来换取原始字符数。

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

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

但我鼓励每个人将其扩展到至少两行(我的偏好是四行带大括号)。

于 2012-04-05T16:36:12.237 回答
0

撇开解决方案的目的不谈,在使用??. 不过不要在家里尝试这个。

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

这个想法是将 DateFrom 设置为最小可能值,本质上是添加一个开放过滤器。

于 2012-04-05T16:39:30.180 回答