tidak boleh ditukar kepada List<string>
? List<object>
ke List<string>
pembolehubah untuk menyebabkan kelainan yang menarik. Kenapa penukaran ini tidak dibenarkan dan selalu mengganggu banyak pemaju. List<object>
Pertimbangkan serpihan kod berikut:
Percubaan penukaran minat dan eksplisit gagal, yang membuat kita tertanya -tanya sebabnya.
List<string> sl = new List<string>(); List<object> ol; ol = sl; // 隐式转换不被允许 ol = (List<object>)sl; // 显式转换也失败
<本> punca akar
Sebab utama had ini ialah ketidakkonsistenan mungkin berlaku dalam senarai. Jika kita membenarkan penukaran ini dan kemudian tambahkan jenis ke senarai ke senarai, senarai rentetan akan menjadi tidak konsisten.
Apabila senarai pertama lelaran dirujuk, kita akan menemui penukaran kelas yang tidak normal, kerana contoh Foo
tidak dapat ditukar kepada rentetan. Konsistensi jenis penyelenggaraan adalah penting untuk memastikan integriti data dalam senarai.
<向> penukaran terbalik: lebih banyak dalam perbincangan yang lebih baik Foo
Adakah penukaran ini dibenarkan? Walaupun ia kelihatan berguna, membolehkan penukaran ini mungkin ralat atau tidak konsisten semasa runtime. Dari kelas yang lebih umum (<)>) kepada penukaran kelas yang lebih spesifik (
<向> Bolehkah penukaran terbalik berjaya dalam C#?
<<>List<object> ol = new List<object>(); List<string> sl; sl = (List<string>)ol;
Atas ialah kandungan terperinci Mengapa saya tidak boleh membuang `senarai` ke` senarai` dalam C#?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!