Rumah >pembangunan bahagian belakang >C++ >Cast() vs. OfType() dalam LINQ: Bilakah Saya Harus Menggunakan Setiap?

Cast() vs. OfType() dalam LINQ: Bilakah Saya Harus Menggunakan Setiap?

Linda Hamilton
Linda Hamiltonasal
2025-01-17 04:41:12825semak imbas

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

Memilih Antara Cast() dan OfType() dalam Linq

Dalam alam LINQ, menghantar jenis daripada ArrayList kepada tin IEnumerable dicapai dengan dua kaedah: Cast() dan OfType(). Memahami nuansanya adalah penting untuk memilih pendekatan yang sesuai untuk senario yang berbeza.

Cast() cuba untuk menghantar setiap elemen dalam ArrayList seolah-olah ia daripada jenis yang ditentukan. Sebarang elemen yang tidak berjaya dihantar akan menyebabkan pengecualian InvalidCastException dilemparkan.

OfType(), sebaliknya, hanya mengembalikan elemen yang boleh dihantar dengan selamat kepada jenis yang ditentukan. Ia melangkau mana-mana elemen yang tidak boleh dihantar, menapis ArrayList dengan berkesan untuk memasukkan elemen jenis yang dikehendaki sahaja.

Bila Menggunakan Setiap Kaedah

  • Gunakan Cast() apabila: Anda ingin menguatkuasakan jenis tertentu pada semua elemen dalam ArrayList, walaupun ia bermakna mengecualikan elemen yang tidak boleh dihantar.
  • Use OfType() apabila: Anda mahu mengekalkan ArrayList asal dan hanya berfungsi dengan elemen yang boleh dihantar dengan selamat kepada jenis yang ditentukan.

Contoh Ilustrasi

Pertimbangkan perkara berikut ArrayList:

object[] objs = new object[] { "12345", 12 };
  • objs.Cast().ToArray(); akan membuang InvalidCastException kerana elemen kedua tidak boleh dihantar ke rentetan.
  • objs.OfType().ToArray(); akan mengembalikan { "12345" }, kerana hanya elemen pertama boleh dihantar ke rentetan.

Atas ialah kandungan terperinci Cast() vs. OfType() dalam LINQ: Bilakah Saya Harus Menggunakan Setiap?. 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