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

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

Barbara Streisand
Lepaskan: 2025-01-17 04:46:08
asal
219 orang telah melayarinya

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

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, terdapat dua kaedah utama: Cast() dan OfType().

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

Kaedah

OfType() secara terpilih menukar hanya elemen yang boleh ditukar dengan selamat kepada jenis sasaran. Ia mengembalikan IEnumerable yang mengandungi hanya elemen yang sepadan dengan jenis yang ditentukan. Sebarang elemen yang tidak boleh ditukar akan dikecualikan daripada set hasil.

Senario yang boleh digunakan untuk kaedah Cast() dan OfType()

Memilih Cast() atau OfType() bergantung pada keperluan khusus anda:

  • Menggunakan Cast():

    • Anda pasti bahawa semua elemen dalam ArrayList boleh berjaya ditukar kepada jenis sasaran.
    • Anda mahu menganggap setiap elemen sebagai jenis sasaran, walaupun jenis sebenar adalah berbeza.
  • Menggunakan OfType():

    • Anda menjangkakan bahawa mungkin terdapat beberapa elemen dalam ArrayList yang tidak boleh ditukar kepada jenis sasaran.
    • Anda hanya mahu berurusan dengan elemen yang boleh ditukar dengan selamat.

Contoh

Andaikan anda mempunyai ArrayList yang mengandungi rentetan dan integer:

<code class="language-csharp">object[] objs = new object[] { "12345", 12 };</code>
Salin selepas log masuk
  • Gunakan Cast():

    <code class="language-csharp">  try
      {
          string[] strArr = objs.Cast<string>().ToArray();
      }
      catch (InvalidCastException)
      {
          // 处理异常
      }</code>
    Salin selepas log masuk

    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>
    Salin selepas log masuk

    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!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan