ホームページ >バックエンド開発 >C++ >C# の値の型は Null と比較できますか?

C# の値の型は Null と比較できますか?

Linda Hamilton
Linda Hamiltonオリジナル
2025-01-16 18:24:14655ブラウズ

Can Value Types in C# Be Compared to Null?

C#における値の型とNullの比較を詳しく解説

C# では、一般に値の型 (整数など) を null にすることはできないと考えられていますが、実際には null 値と比較できます。次のコード スニペットに示すように、この動作は開発者にとって混乱を招く可能性があります:

<code class="language-csharp">Int32 x = 1;
if (x == null)
{
    Console.WriteLine("What the?");
}</code>

このコードは、null は未設定の値オブジェクトを表すため、x を null にすることはできないという予想に反します。ただし、コンパイラはエラーをスローしないため、この比較の妥当性が疑問視されます。

その説明は、C# で演算子が解決される独自の方法にあります。この場合、コンパイラは、適用される可能性のある == 演算子の 2 つのオーバーロードを識別します:

  1. == Null 許容整数の演算子 (Nullable)
  2. 標準整数 == 演算子 (Int32)

x と null はどちらも暗黙的に null 許容整数 (Nullable) に変換できます。演算子の解析ではより具体的な演算子が優先されるため、Null 許容整数演算子 (Nullable の ==) が選択され、比較は常に false と評価されます。

この動作は、値型を他のプリミティブ型と比較できるパターンと一致しています。たとえば、比較 x == 12.6 (x は整数) も常に false になります。これは、整数 x は暗黙的に倍精度浮動小数点数に変換可能であり、比較は 2 つの倍精度浮動小数点数の間で行われるためです。 。

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

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。