x is null vs x == null
C# では、== と is を使用してオブジェクトを null と比較することは伝統的に同様でした。ただし、C# 7 では新しい演算子 is null が導入されており、従来の == null よりもこれを使用する利点はありますか?
セマンティクス
という疑問が生じます。一般に信じられていることに反して、x == null と x is null のセマンティクスは同一ではありません。どちらもオブジェクトを null と比較しますが、null 以外の定数と比較する場合の動作は異なります。
is null の利点
is null の利点の 1 つは、その機能です。比較中にオブジェクトのタイプを考慮します。例:
Test(1); void Test(object o) { if (o is 1) Console.WriteLine("a"); else Console.WriteLine("b"); }
この例では、is 演算子により、それぞれの型を考慮して o と定数 1 を比較できます。
使用する場合は null
通常、null 以外の定数を扱うとき、特に考慮する場合、x は null です。 種類。 null のみを含む比較の場合、== null と is null は両方とも同じ目的を果たします。
いつ使用するか == null
== null は、引き続き信頼できる選択肢です。 null を含む比較。オブジェクトの種類を考慮する必要がない場合は、== null が一般的に使用されます。
Update
Roslyn コンパイラは、== と の動作を調整するように変更されました。オーバーロードされた等価演算子がないシナリオでは null になります。その結果、どちらもより効率的な == 動作に最適化されるようになりました。ただし、オーバーロードされた等価演算子が存在する場合、is null と == null の動作は異なります。
以上がC# の「x is null」と「x == null」: いつどちらを使用する必要がありますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。