c#ternary操作員和無效整數:為什麼? 10 : null
condition ? value1 : value2
c#ternary operator(value1
)都要求value2
和
<code class="language-csharp">int? x = GetBoolValue() ? 10 : null; </code>
10
'之間沒有隱含的轉換,”突出顯示了核心問題。 編譯器將int
解釋為null
>和null
as,嗯,int
(在此上下文中代表缺乏值)。 由於
>解決方案:
明確地將10鑄成一個無效的整數():int?
<code class="language-csharp">int? x = GetBoolValue() ? (int?)10 : null;</code>
這明確地告訴編譯器,應將10
視為無效整數,允許null
>是有效的第二個分支。
>明確施放到一個無效的整數:null
>
<code class="language-csharp">int? x = GetBoolValue() ? 10 : (int?)null;</code>
>> null
,使三元運算符的雙方兼容。 int?
>使用int?
>
<code class="language-csharp">int? x = GetBoolValue() ? 10 : default(int?);</code>
>評估default(int?)
,提供了一種類型安全的方式來表示無效情況。 這通常是明確的首選。 null
將根據x
的結果分配10
(作為int?
)或null
>。 關鍵是要確保三元運算符的兩個分支具有相同的兼容類型。 使用GetBoolValue()
>關鍵字通常被認為是最可讀和可維護的解決方案。
以上是為什麼`getBoolValue()? 10:c#三元操作員中的null`禁止?的詳細內容。更多資訊請關注PHP中文網其他相關文章!