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 サイトの他の関連記事を参照してください。