c# 4.0 Kerjasama genetik dan penyongsang
C# 4.0 memperkenalkan sokongan untuk kolaborasi genetik dan penyongsang, yang menjadikan silsilah jenis generik lebih fleksibel. Dalam versi awal C#, cuba
untuk menetapkan ke List<string>
akan menyebabkan ralat pengkompil, walaupun List<object>
dapat menampung sebarang objek yang boleh ditukar kepada rentetan. List<string>
) untuk menyelaras, dan jenis varian input (seperti IEnumerable<T>
) terbalik. Action<T>
Penyelarasan membolehkan satu jenis digunakan sebagai alternatif kepada jenis lain dalam struktur hierarki warisan. Sebagai contoh,
boleh diberikan kepada, kerana rentetan adalah objek. Ini kerana List<string>
diisytiharkan List<object>
. IEnumerable<T>
IEnumerable<out T>
terbalik List<string>
List<object>
boleh diberikan kepada , kerana objek boleh menerima rentetan sebagai parameter. Ini kerana diisytiharkan , menunjukkan bahawa ia hanya boleh menerima nilai jenis T. Oleh itu, selagi hanya digunakan untuk menghantar nilai, selamat menggunakannya sebagai
.
Action<object>
Melaksanakan butiran Action<string>
Action<T>
Action<in T>
Dalam C# 4.0, varians dicapai menggunakan sokongan kolaboratif dan songsang CLR. Ini menjadikan C# 4.0 menyokong varians tanpa menjejaskan jenis keselamatan. Action<object>
Action<string>
Apabila pengisytiharan jenis generik adalah ubah bentuk output atau ubah bentuk input, pengkompil menghasilkan kod IL tambahan untuk memeriksa varians parameter jenis semasa runtime. Ini memastikan bahawa koordinasi dan pembalik digunakan dengan cara yang selamat.
Atas ialah kandungan terperinci Bagaimanakah Kovarian Generik dan Kontravarian C# 4.0 Meningkatkan Fleksibiliti Tugasan Jenis?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!