C# Generik Perbezaan: Menetapkan senarai & lt;
Apabila menggunakan senarai generik dalam C#, cuba tetapkan senarai jenis yang diperoleh kepada senarai jenis jenis yang diperoleh. Masalah ini disebabkan oleh konflik antara jenis keselamatan dan penyusunan keselamatan jenis semasa runtime. Soalan dan Contoh Kod
Pertimbangkan kod berikut:
Dalam contoh ini, disebabkan oleh pemeriksaan runtime, ia adalah berkesan untuk menetapkan pelbagai zirafah ke array haiwan. Walau bagaimanapun, pengedaran senarai untuk menyenaraikan
akan menyebabkan kesilapan semasa penyusunan.isu yang berbeza dan keselamatan
<code class="language-csharp">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>(); //编译错误 }</code>
C# 4 Perbezaan Square Square:
C# 4 memperkenalkan sokongan untuk varians keselamatan antara muka dan permohonan. Functerbalik dalam T. C# 2 Kaedah:
Dalam C# 2, anda boleh menggunakan senarai.convertall Untuk membuat senarai baru dengan jenis yang diperlukan. Kesimpulan
masalah varians C#menyoroti kepentingan mengekalkan keselamatan jenis semasa tugasan generik. Walaupun bilangan pemeriksaan array atau runtime boleh digunakan untuk mencapai dataran yang tidak selamat, varians keselamatan dengan antara muka dan permohonan dapat memastikan jenis jenis yang betul semasa penyusunan. Untuk versi awal C#, anda boleh menggunakan Senarai .Convertall sebagai penyelesaian alternatif.
Atas ialah kandungan terperinci Mengapa saya tidak dapat menyenaraikan senarai ke C#?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!