LINQ 中 Cast() 與 OfType() 的差異:深入理解
在 LINQ 中,處理可能包含不同類型元素的集合時,您可能需要將整個集合轉換為特定類型。 LINQ 提供了兩種方法來實現此目的:Cast() 和 OfType()。
Cast() 方法
Cast() 嘗試將集合中的所有元素轉換為指定的類型。如果任何元素無法成功轉換,則會引發 InvalidCastException 例外。當您確定集合中的所有元素都可以轉換為所需類型時,此方法非常有用。
OfType() 方法
與 Cast() 不同,OfType() 僅傳回集合中可以安全地轉換為指定類型的元素。它不會嘗試轉換所有元素,因此不會引發異常。當您只想篩選出可以轉換的元素時,此方法非常有用。
範例用法
考慮以下程式碼:
<code class="language-csharp">object[] objs = new object[] { "12345", 12 };</code>
如果您嘗試使用 Cast() 將此陣列轉換為字串集合,則會收到 InvalidCastException 例外,因為其中一個元素是整數。
<code class="language-csharp">IEnumerable<string> someCollection = objs.Cast<string>();</code>
但是,如果您使用 OfType(),它只會傳回可以安全地轉換為字串的元素。
<code class="language-csharp">IEnumerable<string> someCollection = objs.OfType<string>();</code>
在這種情況下,someCollection 將只包含一個元素:「12345」。
總結
Cast() 和 OfType() 是兩種 LINQ 方法,在處理混合型別集合時有不同的用途。 Cast() 嘗試轉換所有元素,而 OfType() 只選擇可以安全轉換的元素。當您確定類型轉換時,請使用 Cast();當您只想篩選出有效元素時,請使用 OfType()。
以上是LINQ 中的 Cast() 或 OfType():何時該使用哪一個?的詳細內容。更多資訊請關注PHP中文網其他相關文章!