Penukaran jenis dalam LINQ: Penjelasan terperinci kaedah Cast() dan OfType()
LINQ (Language Integrated Query) ialah alat berkuasa dalam rangka kerja .NET yang membolehkan pembangun membuat pertanyaan dan mengubah data menggunakan sintaks biasa. Apabila anda perlu menukar elemen dalam ArrayList kepada IEnumerable
Kaedah Cast()
Kaedah Cast() digunakan untuk menukar secara eksplisit semua elemen dalam ArrayList kepada jenis yang ditentukan. Ia cuba menghantar setiap elemen ke jenis sasaran, tanpa mengira jenis sebenar. Jika mana-mana elemen gagal dihantar, InvalidCastException dilemparkan.
Kaedah OfType()
KaedahOfType() secara terpilih menukar hanya elemen yang boleh ditukar dengan selamat kepada jenis sasaran. Ia mengembalikan IEnumerable
Senario yang boleh digunakan untuk kaedah Cast() dan OfType()
Memilih Cast() atau OfType() bergantung pada keperluan khusus anda:
Menggunakan Cast():
Menggunakan OfType():
Contoh
Andaikan anda mempunyai ArrayList yang mengandungi rentetan dan integer:
<code class="language-csharp">object[] objs = new object[] { "12345", 12 };</code>
Gunakan Cast():
<code class="language-csharp"> try { string[] strArr = objs.Cast<string>().ToArray(); } catch (InvalidCastException) { // 处理异常 }</code>
Dalam kes ini, Cast() akan cuba menukar kedua-dua elemen kepada rentetan. Oleh kerana salah satu daripadanya ialah integer, InvalidCastException dilemparkan.
Penggunaan OfType():
<code class="language-csharp"> string[] strArr = objs.OfType<string>().ToArray(); // 只包含 "12345"</code>
OfType() akan berjaya mendapatkan semula elemen rentetan daripada ArrayList dan mengecualikan elemen integer.
Dengan memahami perbezaan antara Cast() dan OfType(), anda boleh menukar jenis dan menapis data dengan berkesan apabila menggunakan LINQ, memastikan ketepatan dan kebolehpercayaan pertanyaan.
Atas ialah kandungan terperinci Cast() vs. OfType() dalam LINQ: Bilakah Saya Harus Menggunakan Setiap untuk Penukaran Jenis?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!