Rumah >pembangunan bahagian belakang >C++ >LINQ Casting: Bila Menggunakan Cast() vs. OfType()?

LINQ Casting: Bila Menggunakan Cast() vs. OfType()?

Mary-Kate Olsen
Mary-Kate Olsenasal
2025-01-17 04:52:12457semak imbas

LINQ Casting: When to Use Cast() vs. OfType()?

Kaedah penukaran jenis dalam LINQ: Perbandingan Cast() dan OfType()

Apabila menggunakan LINQ untuk penukaran jenis, terdapat dua kaedah utama yang digunakan: Cast() dan OfType(). Memahami nuansa kedua-dua pendekatan ini adalah penting untuk manipulasi data yang cekap.

Kaedah Cast()

Kaedah

Cast() cuba menukar setiap elemen dalam IEnumerable kepada jenis sasaran yang ditentukan. Ia tidak melakukan sebarang operasi penapisan; ia hanya cuba menukar semua elemen. Jika sesetengah elemen tidak berjaya ditukar, ini mungkin menyebabkan pengecualian InvalidCastException.

Kaedah OfType()

Kaedah

OfType() menapis elemen berdasarkan jenisnya sebelum menukarnya. Ia mengembalikan IEnumerable yang mengandungi hanya elemen yang boleh ditukar dengan selamat kepada jenis sasaran.

Senario penggunaan

Bila menggunakan setiap kaedah bergantung pada tingkah laku yang diingini:

  • Bila hendak menggunakan Cast():

    • Anda mahu menukar semua elemen dengan sengaja, walaupun ia mungkin menyebabkan pengecualian.
    • Anda pasti setiap elemen boleh ditukar dengan selamat.
  • Bila hendak menggunakan OfType():

    • Anda hanya mahu mendapatkan semula elemen yang selamat untuk ditukar.
    • Anda mahu menapis elemen yang tidak boleh ditukar.

Contoh penerangan

Pertimbangkan contoh berikut:

<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>

Dalam contoh ini, Cast() akan cuba menukar semua elemen, menyebabkan pengecualian InvalidCastException. Walau bagaimanapun, OfType() menapis keluar elemen integer dan hanya mengembalikan "12345".

Ringkasan

Dengan memahami perbezaan antara Cast() dan OfType(), pembangun boleh melaksanakan operasi penukaran jenis yang lebih disasarkan dan cekap dalam pertanyaan LINQ, menghasilkan kod yang lebih jelas dan mantap.

Atas ialah kandungan terperinci LINQ Casting: Bila Menggunakan Cast() vs. OfType()?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn