条件演算子を使用して C# で null 許容代入を処理します
Nullable<T>
として表される Null 許容型は、有効な値を持つ場合とそうでない場合がある値を表すために使用されます。一部の開発者は、Null 許容値を割り当てるときに条件演算子で問題が発生する場合があります。
null 許容型と条件演算子に関する問題
条件演算子 (通常は ?:
と示されます) は、条件を評価し、その真理値に基づいて別の値を割り当てます。ただし、割り当てられた値の 1 つが null 許容型で、もう 1 つがそうでない場合、コンパイラは型の互換性がないためエラーを生成します。
次の例を考えてみましょう:
<code class="language-csharp">EmployeeNumber = string.IsNullOrEmpty(employeeNumberTextBox.Text) ? null : Convert.ToInt32(employeeNumberTextBox.Text);</code>
ここで、EmployeeNumber
は Nullable<int>
、employeeNumberTextBox.Text
は文字列です。 null
を null 許容型に代入することは有効ですが、文字列を int
に変換することは無効です。コンパイラは式の型を正しく推論できません。
null 合体演算子は実行可能な解決策ではありません
が ??
ではない場合、employeeNumberTextBox.Text
から null
への変換が必要となるため、employeeNumberTextBox.Text
ヌル合体演算子 (int
) はここでは使用できません。
null 許容型に変換します
この問題を解決するには、条件演算子で割り当てられた値を明示的に null 許容型に変換する必要があります。これにより、コンパイラは式の型を正しく解決できるようになります:
<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 許容型と条件演算子を使用するときに、エレガントで簡潔な代入が可能になります。
以上がC# で条件演算子を使用して Null 許容代入を処理する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。