C# で条件付き代入に null 許容型を使用する場合のコンパイラ エラー
C# では、null 許容型 (Nullable<int>
など) を扱うときに、条件演算子 (?) を使用した代入によってコンパイラ エラーが発生することがあります。一般的な例は、次のコードに示すように、条件式の結果を null 許容変数に代入しようとしている場合です。
<code class="language-csharp">EmployeeNumber = string.IsNullOrEmpty(employeeNumberTextBox.Text) ? null : Convert.ToInt32(employeeNumberTextBox.Text);</code>
が空の場合は null を割り当て、空でない場合は int 値を割り当てます。ただし、コンパイラは「'null' と 'int' の間の暗黙的な変換を実行できません」というメッセージを表示します。 employeeNumberTextBox.Text
原因分析
問題は、条件演算子が true と false の値のタイプのみを考慮し、式が使用されるコンテキストを考慮しないことです。この場合、互換性のない型である null と int が含まれているため、コンパイラは結果の式の型を判断できません。
解決策
この問題を解決するには、値の 1 つを手動で null 許容型にキャストできます。
<code class="language-csharp">EmployeeNumber = string.IsNullOrEmpty(employeeNumberTextBox.Text) ? (int?)null : Convert.ToInt32(employeeNumberTextBox.Text);</code>
に明示的にキャストすることで、式を解析して代入を行うために必要な型情報をコンパイラーに提供します。あるいは、必要に応じて int 値を (int?)null
にキャストすることもできます。 (int?)
以上がC# で Null 許容型で条件付き代入を使用する場合のコンパイラ エラーを解決する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。