Rumah >pembangunan bahagian belakang >C++ >LINQ Casting: Bila Menggunakan 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()
KaedahCast()
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()
KaedahOfType()
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():
Bila hendak menggunakan OfType():
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!