次のようなブール式を書いています。
team.Category == "A Team" && team?.Manager?.IsVietnamVet
public class Manager
{
public bool IsVietnamVet { get; set; }
}
public class Team
{
public string Category { get; set; }
public Manager Manager { get; set; }
}
...そしてエラーが発生します:
演算子 '&&'は、タイプ 'bool'および 'bool?'のオペランドには適用できません。
それを処理するための最適/クリーンな方法は何ですか?
team.Category == "A Team" && (team?.Manager?.IsVietnamVet ?? false)
それは本当に読みやすいですか?
team.Category == "A Team" && (team?.Manager?.IsVietnamVet).GetValueOrDefault()
LINQ-to-Entitiesでは機能しない可能性があります...
team.Category == "A Team" && team?.Manager?.IsVietnamVet == true
本当に
if (condition == true)
迷わず書いてみませんか?
他のオプションはありますか?最終的には次のように記述した方がよいですか。
team.Category == "A Team" && team.Manager != null && team.Manager.IsVietnamVet
team.Manager?.IsVietnamVet
。つまり、null条件付き後team
はありませんnull
。
nullableBool == true
基本的にテスト中ですnullableBool != false && nullableBool != null
(そして、この2番目の部分が有用であり、したがって不必要ではありません)
nullableBool == true
ラッパーを作らないので使い始めました。== true
@Flaterが言及しているように、通常のブール値を使用するときには通常は書き込みを行わないため、それは読み取り可能であり、変数はnull可能であることが示唆されています。さらに、@ Fabioが言及するように複数のnull条件を使用しないため、LINQの可読性が向上します。