ホームページ > バックエンド開発 > C++ > C# 6.0 の Null 条件演算子 (?.) はどのようにして NullReferenceExceptions を防ぐのでしょうか?

C# 6.0 の Null 条件演算子 (?.) はどのようにして NullReferenceExceptions を防ぐのでしょうか?

Barbara Streisand
リリース: 2025-01-25 15:22:09
オリジナル
301 人が閲覧しました

C# 6.0 Null-Conditional Operator (?.)

C# 6.0 の演算子: Null 条件付き機能の解明

C# 6.0 では ?. 演算子が導入され、null 参照の処理方法が完全に変わりました。この演算子は、null オブジェクトのプロパティにアクセスするとき、またはそのメソッドを呼び出すときに実行時例外を引き起こす可能性がある一般的な問題を解決します。

?. 演算子

の目的

?. 演算子は「空の条件演算子」とも呼ばれ、次の主要な機能があります。

  • Null チェック: 最初のオペランド (例: a) が null かどうかを評価します。 a が空の場合、演算子は評価を終了し、null を返します。
  • メンバー アクセス: a が null でない場合、演算子は評価を続行し、最初のオペランドのメンバー (例: a.PropertyOfA) にアクセスします。

使用法

?. 演算子の使用法は簡単です:

<code class="language-csharp">if (a?.PropertyOfA != foo) {
   //somecode
}</code>
ログイン後にコピー
上記の例では、a が null の場合、式 a?.PropertyOfA は null と評価され、foo との比較の結果は false になり、null 参照異常を発生させることなく if ステートメントで実行を続行できます。

等価

概念的には、? 演算子は次のコードと同等です:

<code class="language-csharp">if (a != null) {
    a.PropertyOfA;
}
else {
    null;
}</code>
ログイン後にコピー
ただし、?. 演算子は a の冗長な評価を回避し、コードのパフォーマンスを最適化します。

サンプルアプリケーション

FileInfo オブジェクト fi があるシナリオを考えてみましょう。このオブジェクトは null である場合とそうでない場合があります。 ? 演算子を使用すると、潜在的な例外を回避できます:

<code class="language-csharp">FileInfo fi = ...; // fi 可能为空
long? length = fi?.Length; // 如果 fi 为空,则 length 将为空</code>
ログイン後にコピー
この場合、fi が空の場合、例外をスローせずに長さは null に設定されます。

結論

C# 6.0 の ?. 演算子は、null 参照を処理するための洗練された効率的なソリューションを提供し、開発者がより堅牢で簡潔なコードを作成できるようにします。単一の式で null チェックとメンバー アクセスの両方を提供することで、コード構造が簡素化され、プログラムの安全性が向上します。

以上がC# 6.0 の Null 条件演算子 (?.) はどのようにして NullReferenceExceptions を防ぐのでしょうか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート