ホームページ > バックエンド開発 > C++ > 条件演算子を使用して Null 許容型に代入する際の暗黙的な型変換エラーを解決するにはどうすればよいですか?

条件演算子を使用して Null 許容型に代入する際の暗黙的な型変換エラーを解決するにはどうすればよいですか?

Mary-Kate Olsen
リリース: 2025-01-16 16:38:39
オリジナル
450 人が閲覧しました

How to Resolve Implicit Type Conversion Errors When Assigning to Nullable Types with the Conditional Operator?

条件演算子を使用して 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 サイトの他の関連記事を参照してください。

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