これは機能し、メンバーが null でない場合にのみ Invoke を呼び出します。
List<Command> list = GetCommands();
list.FirstOrDefault(predicate)?.Invoke();
プロパティ セッターの条件付き呼び出しは機能しません。
list.FirstOrDefault(predicate)?.IsAvailable = true;
代わりに、明示的な null チェックを含める必要があります。
var command = list.FirstOrDefault(predicate);
if (command != null)
command.IsAvailable = true;
それは本質的に構文上の砂糖であることを考えると、セッターにとっては理にかなっていると思いました:
list.FirstOrDefault(predicate)?.set_IsAvailable(true);
オブジェクトが null でないことを条件としてオブジェクトのプロパティを設定するためのインライン構文はありますか?