LINQ中的型別轉換:Cast()和OfType()方法詳解
LINQ (Language Integrated Query)是.NET框架中一個強大的工具,它允許開發者使用熟悉的語法查詢和轉換資料。當需要將ArrayList中的元素轉換為IEnumerable
Cast()方法
Cast()方法用於將ArrayList中的所有元素明確轉換為指定的類型。它嘗試將每個元素強制轉換為目標類型,而不管其實際類型是什麼。如果任何元素轉換失敗,則會拋出InvalidCastException異常。
OfType()方法
OfType()方法則只選擇性地轉換那些可以安全地轉換為目標類型的元素。它傳回一個IEnumerable
Cast()和OfType()方法的適用場景
選擇Cast()還是OfType()取決於你的特定需求:
使用Cast()的情況:
使用OfType()的情況:
範例
假設你有一個ArrayList,其中包含字串和整數:
<code class="language-csharp">object[] objs = new object[] { "12345", 12 };</code>
使用Cast():
<code class="language-csharp"> try { string[] strArr = objs.Cast<string>().ToArray(); } catch (InvalidCastException) { // 处理异常 }</code>
在這種情況下,Cast()會嘗試將兩個元素都轉換為字串。由於其中一個是整數,因此會拋出InvalidCastException異常。
使用OfType():
<code class="language-csharp"> string[] strArr = objs.OfType<string>().ToArray(); // 只包含 "12345"</code>
OfType()會成功地從ArrayList中檢索字串元素,並排除整數元素。
透過理解Cast()和OfType()之間的區別,你可以在使用LINQ時有效地轉換類型和過濾數據,確保查詢的準確性和可靠性。
以上是LINQ 中的 Cast() 與 OfType():什麼時候應該使用 Each 進行型別轉換?的詳細內容。更多資訊請關注PHP中文網其他相關文章!