C#の三元コンピューティングシンボルと空のタイプ:詳細を制限
空の値タイプを処理する場合、三元コンピューティングシンボル(?:)は予期しない動作がある場合があります。一般的な問題は、三元コンピューティングシンボルを使用して、整数文字またはnullを運河整数変数に割り当てることです。
たとえば、次のコードを検討してください
このコードでは、三元コンピューティングシンボルが正しい式を計算しようとします。その中で
ブール値に戻ると、10は整数のリテラルであり、nullは空いている参照です。コンパイラは、これらの値を変換して、左式のタイプ、つまり<code class="language-csharp">int? x = GetBoolValue() ? 10 : null;</code>
ただし、文字通りのボリューム(空ではない)と空の整数(
<code class="language-csharp">GetBoolValue() ? 10 : null</code>
GetBoolValue()
この問題を解決するためには、正しい式を変更するために、3つのYuanオペレーターの2つの分岐が左式と互換性のある値を返すようにする必要があります。これは、暗黙的な変換または明示的な変換によって達成できます:int?
これらの変更により、コンパイラは正しい式を正常に計算し、エラーを排除するために条件付き式のタイプを決定できます。 int?
以上がC#でnullableタイプで3成分演算子が失敗するのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。