ホームページ > バックエンド開発 > C++ > C#でnullableタイプで3成分演算子が失敗するのはなぜですか?

C#でnullableタイプで3成分演算子が失敗するのはなぜですか?

Patricia Arquette
リリース: 2025-01-28 21:56:09
オリジナル
899 人が閲覧しました

Why Does the Ternary Operator Fail with Nullable Types in C#?

C#の三元コンピューティングシンボルと空のタイプ:詳細を制限

空の値タイプを処理する場合、三元コンピューティングシンボル(?:)は予期しない動作がある場合があります。一般的な問題は、三元コンピューティングシンボルを使用して、整数文字またはnullを運河整数変数に割り当てることです。

たとえば、

次のコードを検討してください

このコードでは、三元コンピューティングシンボルが正しい式を計算しようとします。

その中で

ブール値に戻ると、10は整数のリテラルであり、nullは空いている参照です。コンパイラは、これらの値を変換して、左式のタイプ、つまり
<code class="language-csharp">int? x = GetBoolValue() ? 10 : null;</code>
ログイン後にコピー
に一致させようとします。

ただし、文字通りのボリューム(空ではない)と空の整数(
<code class="language-csharp">GetBoolValue() ? 10 : null</code>
ログイン後にコピー
)の間に隠された変換はありません。同様に、nullと整数の間に隠された変換はありません。これにより、コンパイラエラーが発生します:

GetBoolValue() この問題を解決するためには、正しい式を変更するために、3つのYuanオペレーターの2つの分岐が左式と互換性のある値を返すようにする必要があります。これは、暗黙的な変換または明示的な変換によって達成できます:int?

これらの変更により、コンパイラは正しい式を正常に計算し、エラーを排除するために条件付き式のタイプを決定できます。 int?

以上がC#でnullableタイプで3成分演算子が失敗するのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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