Rumah > pembangunan bahagian belakang > C++ > Bolehkah senarai ditugaskan untuk disenaraikan di C#?

Bolehkah senarai ditugaskan untuk disenaraikan di C#?

Linda Hamilton
Lepaskan: 2025-02-02 05:36:11
asal
547 orang telah melayarinya

Can List Be Assigned to List in C#?

C# Jenis Varians Masalah: Tandatangan senarai & lt;

Dalam masalah senarai & lt; Adakah terdapat penyelesaian? Contoh

Pertimbangkan kod berikut:

kerjasama

Penyelarasan adalah keupayaan untuk memegang objek jenis yang diperoleh apabila diisytiharkan bahawa struktur data dapat memegang objek jenis asas. Dalam contoh di atas, Senarai
class Animal { }
class Giraffe : Animal { }

static void Main(string[] args)
{
    // 数组赋值成功
    Animal[] animals = new Giraffe[10];

    // 隐式赋值失败
    List<Animal> animalsList = new List<Giraffe>(); // 错误

    // 显式转换失败
    List<Animal> animalsList2 = (List<Animal>)new List<Giraffe>(); // 错误
}
Salin selepas log masuk
boleh memegang objek haiwan atau mana -mana jenis yang diperoleh (seperti zirafah).

<组> perbezaan persegi dalam array dan senarai

Arahan menyokong varians jenis rujukan pada runtime dan menjalankan pemeriksaan jenis. Walau bagaimanapun, generik direka untuk mencapai keselamatan jenis semasa penyusunan. Oleh itu, penyerahan senarai tersembunyi dan eksplisit untuk menyenaraikan akan gagal.

<安全> perbezaan persegi yang tidak selamat

Membenarkan jenis varians persegi ini akan menyebabkan kesilapan runtime, seperti yang ditunjukkan dalam kod berikut:

<> Perbezaan keselamatan dalam C# 4

C# 4 memperkenalkan sokongan untuk varians generik keselamatan dalam antara muka dan amanah. Antara muka seperti func <协> (kolaboratif) dan permohonan seperti tindakan (songsang) memastikan keselamatan jenis.

<决> penyelesaian

List<Giraffe> giraffes = new List<Giraffe>();
giraffes.Add(new Giraffe());
List<Animal> animals = giraffes; // 错误
animals.Add(new Lion()); // 不安全,违反类型安全
Salin selepas log masuk

Dalam C# 2, jika anda tidak perlu mengekalkan satu senarai, anda boleh menggunakan senarai .Convertall Untuk membuat senarai baru dengan jenis keperluan.

Output Revied ini mengekalkan imej asal dan menyusun semula teks untuk mencapai pseudo-asal

Atas ialah kandungan terperinci Bolehkah senarai ditugaskan untuk disenaraikan di C#?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

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