LINQ 中的型別轉換方法:Cast() 與 OfType() 的比較
使用 LINQ 進行型別轉換時,主要用到兩種方法:Cast()
和 OfType()
。理解這兩種方法的細微差別對於高效的資料操作至關重要。
Cast() 方法
Cast()
方法嘗試將 IEnumerable
中的每個元素轉換為指定的目標類型。它不執行任何過濾操作;它只是簡單地嘗試轉換所有元素。如果某些元素無法成功轉換,則可能會導致 InvalidCastException
異常。
OfType() 方法
OfType()
方法則在轉換元素之前根據其類型進行過濾。它傳回一個 IEnumerable
,其中只包含那些可以安全地轉換為目標類型的元素。
使用場景
何時使用每種方法取決於所需的行為:
何時使用 Cast():
何時使用 OfType():
範例說明
考慮以下範例:
<code class="language-csharp">object[] objs = new object[] { "12345", 12 }; IEnumerable<string> castCollection = objs.Cast<string>().ToArray(); // 抛出 InvalidCastException 异常 IEnumerable<string> ofTypeCollection = objs.OfType<string>().ToArray(); // 返回 { "12345" }</code>
在此範例中,Cast()
會嘗試轉換所有元素,導致 InvalidCastException
異常。但是,OfType()
會過濾掉整數元素,只回傳 "12345"。
總結
透過理解 Cast()
和 OfType()
之間的區別,開發人員可以在 LINQ 查詢中執行更具針對性和效率的類型轉換操作,從而編寫更清晰、更健壯的程式碼。
以上是LINQ 轉換:何時使用 Cast() 與 OfType()?的詳細內容。更多資訊請關注PHP中文網其他相關文章!