ホームページ >バックエンド開発 >C++ >C# で条件演算子を使用して Null 許容代入を処理する方法

C# で条件演算子を使用して Null 許容代入を処理する方法

Patricia Arquette
Patricia Arquetteオリジナル
2025-01-16 16:35:19135ブラウズ

How to Handle Nullable Assignments with Conditional Operators in C#?

条件演算子を使用して 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>

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

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