Rumah >pembangunan bahagian belakang >C++ >Mengapa kovarians tidak berfungsi dengan jenis nilai dalam C#?
c# kovarians dan pelanggaran: sekatan jenis nilai
antara muka dalam C# mempamerkan kovarians, yang membolehkan tugasan rujukan jenis yang diperolehi kepada rujukan jenis asas. Walau bagaimanapun, ini tidak terpakai kepada jenis nilai. Menugaskan IEnumerable<T>
ke IEnumerable<int>
menghasilkan ralat kompilasi. IEnumerable<object>
), sementara unboxing membalikkan ini. Parameter Jenis object
IEnumerable<T>
hanya berfungsi dengan jenis rujukan. Menetapkan T
jenis nilai kepada IEnumerable
memerlukan tinju, yang tidak disokong secara tersirat untuk jenis nilai. IEnumerable<object>
tulisan Eric Lippert mengenai perwakilan dan identiti menyerlahkan bahawa penukaran ini menuntut pemeliharaan identiti. Kerana jenis nilai 'Proses tinju memecahkan pemeliharaan ini, mereka tidak serasi dengan kovarians dan pelanggaran.
Atas ialah kandungan terperinci Mengapa kovarians tidak berfungsi dengan jenis nilai dalam C#?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!