C# 中使用條件運算子處理可空賦值
可空型,表示為 Nullable<T>
,用於表示可能具有或可能不具有有效值的值。在賦值可空值時,一些開發人員可能會遇到條件運算子的挑戰。
可空型別與條件運算子的問題
條件運算符,通常表示為 ?:
,評估一個條件,並根據其真值分配不同的值。但是,如果指派的值之一是可空類型,而另一個不是,則編譯器會因為類型不相容而產生錯誤。
考慮以下範例:
<code class="language-csharp">EmployeeNumber = string.IsNullOrEmpty(employeeNumberTextBox.Text) ? null : Convert.ToInt32(employeeNumberTextBox.Text);</code>
這裡,EmployeeNumber
是 Nullable<int>
,employeeNumberTextBox.Text
是一個字串。將 null
指派給可空類型是有效的,但將字串轉換為 int
不是。編譯器無法正確推斷表達式的型別。
空合併運算子不是可行的解
空合併運算子 (??
) 不能在這裡使用,因為當 employeeNumberTextBox.Text
不為 null
時需要進行從 employeeNumberTextBox.Text
到 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>
這允許在使用可空型別和條件運算子時進行優雅和簡潔的賦值。
以上是如何在 C# 中使用條件運算子處理可為空賦值?的詳細內容。更多資訊請關注PHP中文網其他相關文章!