ホームページ > バックエンド開発 > C++ > C# で Null 許容型で条件付き代入を使用する場合のコンパイラ エラーを解決する方法

C# で Null 許容型で条件付き代入を使用する場合のコンパイラ エラーを解決する方法

Linda Hamilton
リリース: 2025-01-16 16:32:09
オリジナル
754 人が閲覧しました

How to Resolve Compiler Errors When Using Conditional Assignment with Nullable Types in C#?

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>
ログイン後にコピー
null を

に明示的にキャストすることで、式を解析して代入を行うために必要な型情報をコンパイラーに提供します。あるいは、必要に応じて int 値を (int?)null にキャストすることもできます。 (int?)

このソリューションを使用すると、特にオブジェクト初期化子でプロパティを初期化する場合に、Null 許容型と条件演算子をより洗練された方法で使用できるようになります。

以上がC# で Null 許容型で条件付き代入を使用する場合のコンパイラ エラーを解決する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート