ホームページ > バックエンド開発 > C++ > C#6.0のnull条件演算子(?。)は、nullReferenceExceptionsをどのように防止しますか?

C#6.0のnull条件演算子(?。)は、nullReferenceExceptionsをどのように防止しますか?

Patricia Arquette
リリース: 2025-01-25 15:31:09
オリジナル
452 人が閲覧しました

How Does C# 6.0's Null Conditional Operator (?. ) Prevent NullReferenceExceptions?

C# 6.0 null 条件演算子の詳細な説明: ?.

C# 6.0 で導入された ?. 演算子 (null 条件演算子) は、開発者の間で広く注目を集めています。これにより、null 参照を処理する洗練された方法が提供され、よりクリーンで効率的なコードが得られます。

? 演算子の詳細説明

? 演算子の中心的な役割は、潜在的な null 参照例外を防ぐことです。その動作メカニズムは次のとおりです:

  • 最初のオペランドが null 以外の場合、2 番目のオペランド (メンバー アクセス) が評価されます。
  • 最初のオペランドが空の場合は、例外をスローする代わりに null を返します。

実際の応用: null 参照例外の回避

次の例を考えてみましょう:

<code class="language-csharp">public class A {
   public string PropertyOfA { get; set; }
}

...

var a = new A();
var foo = "bar";
if(a?.PropertyOfA != foo) {
   //somecode
}</code>
ログイン後にコピー

この例では、?. 演算子は a が空の場合を適切に処理します。 a が空の場合、a?.PropertyOfA は null を返し、後続の比較によって発生する NullReferenceException を回避します。 a が空でない場合、a.PropertyOfA が評価され、foo と比較されます。

条件文との類似性

空の条件演算子は、簡略化された条件文に似ています。

<code class="language-csharp">string bar = (a == null ? null : a.PropertyOfA);
if (bar != foo)
{
    ...
}</code>
ログイン後にコピー

ただし、?. 演算子はよりクリーンで効率的な代替手段を提供します。

型変換に関する注意事項

? 演算子の使用は式のタイプに影響を与える可能性があることに注意してください。たとえば、プロパティが long 型のデータを返す場合、null 条件演算子を使用すると、long?:

型の式が生成されます。
<code class="language-csharp">FileInfo fi = ...; // fi可能为空
long? length = fi?.Length; // 如果fi为空,length将为空</code>
ログイン後にコピー

概要

C# 6.0 の ?. 演算子は、null 参照を処理する便利で安全な方法を提供し、多くのシナリオでの明示的な null チェックや面倒なエラー処理の必要性を回避します。この強力な機能を使用すると、開発者はより堅牢で効率的なコードを作成でき、予期しない例外の可能性が減り、コードの可読性が向上します。

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

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