LINQ 型態轉換中 Cast() 與 OfType() 的差異
在使用 LINQ 處理 ArrayList 和型別轉換時,Cast()
和 OfType()
這兩種方法特別突出。理解它們的差異對於有效的類型處理至關重要。
Cast() 與 OfType() 的比較
Cast()
:
InvalidCastException
異常。 OfType()
:
使用方法
Cast()
:當您確定 ArrayList 中的所有元素都可以轉換為所需的類型時,請使用此方法。這種方法效率很高,但假設數據有效。 OfType()
:當您需要過濾掉無法轉換為所需類型的元素時,請使用此方法。它提供了一種更安全的方法,防止由於無效轉換而導致的潛在異常。 範例
考慮一個物件陣列:
<code class="language-csharp">object[] objs = new object[] { "12345", 12 };</code>
使用 Cast()
轉換此陣列:
<code class="language-csharp">objs.Cast<string>().ToArray();</code>
將導致 InvalidCastException
異常,因為元素 "12" 無法轉換為字串。
使用 OfType()
轉換:
<code class="language-csharp">objs.OfType<string>().ToArray();</code>
將產生一個只有一個元素的陣列:
<code class="language-csharp">{ "12345" }</code>
這示範了 OfType()
如何有效地過濾掉無法安全轉換的元素。
以上是LINQ 中的 Cast() 與 OfType():何時使用哪一個來實現型別安全?的詳細內容。更多資訊請關注PHP中文網其他相關文章!