ホームページ > バックエンド開発 > C++ > C#6.0のNull-Conditional Operator(?。)の背後にある謎は何ですか?

C#6.0のNull-Conditional Operator(?。)の背後にある謎は何ですか?

Susan Sarandon
リリース: 2025-01-25 15:43:11
オリジナル
875 人が閲覧しました

What's the Mystery Behind C# 6.0's Null-Conditional Operator (?.)?

C# 6.0 疑問符ドット演算子の秘密

C# 6.0 で導入された ?. 演算子は、開発者の間で関心を集めています。その謎を明らかにしましょう:

機能:

?. 演算子は「空の条件演算子」と呼ばれます。これにより、煩わしい NullReferenceException 例外を発生させることなく、安全にプロパティにアクセスしたり、null の可能性があるオブジェクトのメソッドを呼び出すことができます。

仕組み:

? 演算子は最初のオペランドを評価します。 null の場合、式は停止し、null を返します。ただし、最初のオペランドが null でない場合は、最初のオペランドのメンバーとしてアクセスされる 2 番目のオペランドの評価に進みます。

例:

次のコード スニペットを考えてみましょう:

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

...

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

ここで、a が null の場合、a?.PropertyOfA は例外をスローする代わりに正常に null を返します。これにより、文字列の == 演算子を使用して foo と比較し、問題なく if ステートメントの実行を続行できるようになります。

同等のコード:

?. 演算子は、次のコードの短縮版と考えることができます:

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

メモを入力します:

?. 演算子も式のタイプを変更できることに注意してください。たとえば、FileInfo.Length は、long 型のプロパティです。ただし、? を使用すると、long? 型の式になります:

<code class="language-c#">FileInfo fi = ...; // fi 可能为 null
long? length = fi?.Length; // 如果 fi 为 null,length 将为 null</code>
ログイン後にコピー

以上がC#6.0のNull-Conditional Operator(?。)の背後にある謎は何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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