ホームページ >バックエンド開発 >C++ >なぜ `? 10:null` null` nullabult nullableタイプのc#rernary演算子で禁止されていますか?

なぜ `? 10:null` null` nullabult nullableタイプのc#rernary演算子で禁止されていますか?

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2025-01-28 21:51:10135ブラウズ

Why is `? 10 : null` Forbidden in C# Ternary Operators with Nullable Types?

c#ternaryコンピューティングと空のタイプ:なぜ

エラーを報告するのですか? ? 10 : null C#で使用可能なタイプを使用する場合、式のタイプの一貫性は非常に重要です。三元コンピューティング文字(:)条件に基づいて2つの式を評価します。最初の式の結果が返されます。

次のコードフラグメントを検討してください:

ここでは、intとnullをケーブルint変数xに割り当てようとします。これら2つのタイプの間に隠された変換がないため、これによりコンパイラエラーが発生する可能性があります。

<code class="language-csharp">int? x = GetBoolValue() ? 10 : null; // 错误</code>
コンパイラは最初に正しい式を評価しようとします:

リテラル10はintタイプで、nullは空のタイプです。 2つの間に隠された変換はないため、エラーが発生します。

<code class="language-csharp">GetBoolValue() ? 10 : null</code>
この問題を解決するために、明示的な変換を実行して、タイプの一貫性を確保することができます。

または、空の単語の表面をintに変換することができますか?

<code class="language-csharp">int? x = GetBoolValue() ? (int?)10 : null; // 将10转换为int?</code>
または、デフォルトのキーワードを使用できます:

<code class="language-csharp">int? x = GetBoolValue() ? 10 : (int?)null; // 将null转换为int?</code>
タイプの一貫性を確保することにより、コンパイラエラーを回避し、タイプの完全性を維持できます。

以上がなぜ `? 10:null` null` nullabult nullableタイプのc#rernary演算子で禁止されていますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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