パターン マッチングと Null を使用した等価性の比較
C# 7 では、新しいパターン マッチング演算子 "is" が次のように導入されました。等価演算子「==」の代替。 null をチェックするときは同じように動作するように見えますが、微妙な違いがいくつかあります。
意味の違い:
-
Null の場合: 「is null」と「== null」の使用は同じです効果。
-
パターン マッチング: null 以外のリテラルまたは定数値とともに使用すると、「is」は型の互換性とパターン マッチングをチェックします。たとえば、「if (x is 1)」は、「x」が int 型で値が 1 であるかどうかをチェックします。
実装の詳細:
-
"is null": を呼び出してコンパイルします。 System.Object.Equals(object, object).
-
"== null": コンパイルして ceq 命令を呼び出し、等価性チェックを実行します。
パフォーマンス:
以前のバージョンではRoslyn コンパイラでは、追加の型とパターンの一致チェックにより、「is null」は「== null」に比べてパフォーマンスが若干低下します。ただし、新しいバージョンでは動作が最適化され、オーバーロードされた等価演算子がない場合は両方の演算子が同等のパフォーマンスを発揮します。
使用上の推奨事項:
- 「」を使用します。 null と型チェックの両方を実行する場合は、"is null" を使用します。
- 単純な等価性を得るには、"== null" を使用します。特にパフォーマンスが懸念される場合は、チェックを行ってください。
- 定数やリテラルの型と値の検証など、より複雑なシナリオでは、パターン マッチングで "is" を使用することを検討してください。
以上が`C# で Null をチェックするには、「is null」または「== null」のどちらが適していますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。