条件演算子を使用して null 許容値型に代入する場合の暗黙的な型変換エラーを解決するにはどうすればよいですか?
Null 許容値の型を扱う場合、値を割り当てるために条件演算子 (? :) を使用する必要がある状況がよく発生します。ただし、コンパイラは暗黙的な型変換に関してエラーを生成する場合があります。
たとえば、次のコードを考えてみましょう:
<code class="language-csharp">EmployeeNumber = string.IsNullOrEmpty(employeeNumberTextBox.Text) ? null : Convert.ToInt32(employeeNumberTextBox.Text);</code>
ここで、EmployeeNumber
は、NULL 値を許可するデータベース列によってサポートされる Nullable<int>
属性です。このコンテキストでは null 値と整数値の両方が有効ですが、コンパイラーは引き続きエラーを報告します:
「null」と「int」の間の暗黙的な変換は実行できません
この問題は、条件演算子が true/false 値のみを考慮し、結果の式の使用法を考慮しないという事実に起因します。 null と整数には共通の型がないため、コンパイラは適切な代入型を決定できません。
解決策: 明示的な変換
この問題を解決するには、コンパイラが正しい型を推測できるように、値の 1 つを明示的に Nullable<int>
にキャストする必要があります。
<code class="language-csharp">EmployeeNumber = string.IsNullOrEmpty(employeeNumberTextBox.Text) ? (int?)null : Convert.ToInt32(employeeNumberTextBox.Text);</code>または
<code class="language-csharp">EmployeeNumber = string.IsNullOrEmpty(employeeNumberTextBox.Text) ? null : (int?)Convert.ToInt32(employeeNumberTextBox.Text);</code>明示的な変換を使用すると、結果が null 許容の整数であることをコンパイラに強制的に認識させ、代入を成功させることができます。
注: 文字列をインラインで null 許容整数に変換する必要があるため、このシナリオでは null 合体演算子 (??) は適切な代替手段を提供しません。
以上が条件演算子を使用して Null 許容型に代入する際の暗黙的な型変換エラーを解決するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。