这有效,仅当成员不为空时才调用 Invoke:
List<Command> list = GetCommands();
list.FirstOrDefault(predicate)?.Invoke();
有条件地调用属性设置器不起作用:
list.FirstOrDefault(predicate)?.IsAvailable = true;
相反,必须包括显式空检查:
var command = list.FirstOrDefault(predicate);
if (command != null)
command.IsAvailable = true;
我认为对于二传手来说这很有意义,因为它本质上是语法糖:
list.FirstOrDefault(predicate)?.set_IsAvailable(true);
是否有以对象不为空为条件设置对象属性的内联语法?