首頁 >後端開發 >C++ >LINQ 中的 Cast() 與 OfType():何時使用哪一個來實現型別安全?

LINQ 中的 Cast() 與 OfType():何時使用哪一個來實現型別安全?

Patricia Arquette
Patricia Arquette原創
2025-01-17 04:37:09640瀏覽

Cast() vs. OfType() in LINQ: When to Use Which for Type Safety?

LINQ 型態轉換中 Cast() 與 OfType() 的差異

在使用 LINQ 處理 ArrayList 和型別轉換時,Cast()OfType() 這兩種方法特別突出。理解它們的差異對於有效的類型處理至關重要。

Cast() 與 OfType() 的比較

Cast()

  • 嘗試將 ArrayList 中的所有元素轉換為指定的類型。
  • 如果任何元素無法成功轉換,則引發 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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn