私はかなりヌル・オペレーターの使用に関して、それらの違いを理解していない記事からの次のコードを持っている:ヌルオペレータの混乱
if (memberAccessExpr?.Name.ToString() != "Match") return;
この1は私には明らかである私は、 nullの場合はmemberAccessExpr
をチェックし、nullの場合は "Match"との比較がfalseを返します。正しいですか?
混乱は、第1が付属しています:
はif (memberSymbol?.ToString().StartsWith("System.Text.RegularExpressions.Regex.Match") ?? true) return;
このコード行は、私には思わ
は、ほとんど最初のと同じである私は、単純なヌルチェックを行い、その後、返す関数を呼び出すので、ブール値(!=
対StartsWith
)...なぜ、最初の行ではなく、追加の?? - 演算子が必要ですか?たぶんそれは暗黙的な== true
比較と何かがあり、それは?? - 演算子なしで行われるでしょうか?
私は、見当もつかないので、多分あなたたちは私を啓発することができます)
乾杯、 マイケル
大丈夫2行目の式は良い答えてくれてありがとうstuff..but NULL可能bool..confusingあるので、今、私は、それを得る:)を使用しているので、 –
それがNULL可能ブール値となり'? '演算子であるので、' null'値と右辺式の結果( 'bool')の両方を保持できる必要があります。したがって' bool?'です。コードはコンパイラのコードではなく、私があなたに説明するために書いたものであることに注意してください。 – Jcl
だから、基本的にオブジェクトの何かを呼び出すと?単純な型を返す演算子、私は結果を確認することができます??演算子は型のnullableになるので、右か? –