【发布时间】:2019-12-02 09:37:10
【问题描述】:
我有一个返回布尔值的“Func<bool> Filter”委托。但是,我的班级的用户不需要提供这个,如果没有提供,默认值应该是 true。但是,如果过滤器为空,则结果等于 false。我不确定为什么。我认为该声明基本上不会导致任何事情发生,并且仍然是正确的。如果可能的话,我错过了什么以及如何使用这种速记方式来做到这一点。我知道我可以用不同的方式写出来,但我正在尝试用这种新的速记方式来理解这个想法。
bool? result = true;
result = h.Filter?.Invoke(args); // IF Filter IS NULL THIS LINE TURNS result TO FALSE
if (result != null || result == true)
{
yield return h.Callback(args);
h.Post?.Invoke(args);
}
【问题讨论】:
-
不可能是
result == false。这不是这里发生的事情。如果你测试result.HasValue,你会得到false。 -
if(result ?? true)
标签: c#