ホームページ > バックエンド開発 > C++ > C# で値の型の比較に Null が許可されるのはなぜですか?

C# で値の型の比較に Null が許可されるのはなぜですか?

Susan Sarandon
リリース: 2025-01-16 18:16:15
オリジナル
989 人が閲覧しました

Why Does C# Allow Value Type Comparisons to Null?

C# の値型との Null 比較を理解する

C# では、値型との null 比較が許可されていますが、一見直感に反していますが、コンパイラのインテリジェントな演算子のオーバーロード解決に由来しています。 コンパイラは、コンテキストに基づいて最も適切なオーバーロードされた演算子を選択します。

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

<code class="language-C#">Int32 x = 1;
if (x == null)
{
    Console.WriteLine("What the?");
}</code>
ログイン後にコピー

コンパイラーは、これを、null 許容整数 (==) 用に設計されたオーバーロードされた int? 演算子を使用した比較として解釈します。 Int32 変数 x は暗黙的に null 許容整数に変換され、null リテラルも null 許容整数として扱われます。 したがって、比較は有効ですが、常に false.

と評価されます。

値の型を別の型のリテラルと比較する場合にも、同じ原則が適用されます。

<code class="language-C#">if (x == 12.6)</code>
ログイン後にコピー

ここで、コンパイラは、==double に対してオーバーロードされた double? 演算子を利用します。 xdouble に変換され、リテラル 12.6double になります。 繰り返しますが、比較は有効であり、結果は false.

になります。

演算子のオーバーロードにおけるこの柔軟性により、コードの簡潔さと読みやすさが向上します。 ただし、プログラマは予期しない動作の可能性に留意し、これらの比較を慎重に使用する必要があります。

以上がC# で値の型の比較に Null が許可されるのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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