首頁 > 後端開發 > C++ > LINQ 中的 Cast() 與 OfType():什麼時候應該使用 Each 進行型別轉換?

LINQ 中的 Cast() 與 OfType():什麼時候應該使用 Each 進行型別轉換?

Barbara Streisand
發布: 2025-01-17 04:46:08
原創
219 人瀏覽過

Cast() vs. OfType() in LINQ: When Should I Use Each for Type Conversion?

LINQ中的型別轉換:Cast()和OfType()方法詳解

LINQ (Language Integrated Query)是.NET框架中一個強大的工具,它允許開發者使用熟悉的語法查詢和轉換資料。當需要將ArrayList中的元素轉換為IEnumerable時,主要有兩種方法:Cast()和OfType()。

Cast()方法

Cast()方法用於將ArrayList中的所有元素明確轉換為指定的類型。它嘗試將每個元素強制轉換為目標類型,而不管其實際類型是什麼。如果任何元素轉換失敗,則會拋出InvalidCastException異常。

OfType()方法

OfType()方法則只選擇性地轉換那些可以安全地轉換為目標類型的元素。它傳回一個IEnumerable,其中只包含與指定類型相符的元素。任何無法轉換的元素都將被排除在結果集合之外。

Cast()和OfType()方法的適用場景

選擇Cast()還是OfType()取決於你的特定需求:

  • 使用Cast()的情況:

    • 你確定ArrayList中的所有元素都可以成功轉換為目標類型。
    • 你希望將每個元素視為目標類型,即使其實際類型不同。
  • 使用OfType()的情況:

    • 你預期ArrayList中可能存在一些無法轉換為目標類型的元素。
    • 你只想處理那些可以安全轉換的元素。

範例

假設你有一個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中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板