Pertanyaan yang diberi tag «covariance»

Kovarian, kontravarian, dan invarian menggambarkan bagaimana hierarki pewarisan tipe yang ada berubah ketika mengalami beberapa transformasi (seperti penggunaan dalam obat generik). Jika transformasi mempertahankan urutan hierarki asli, itu disebut "kovarian". Jika membalikkannya, itu "kontravarian". Jika rusak, itu "tidak berubah".



9
Kovarian dan contravariance contoh dunia nyata
Saya mengalami sedikit kesulitan memahami bagaimana saya akan menggunakan kovarians dan contravariance di dunia nyata. Sejauh ini, satu-satunya contoh yang saya lihat adalah contoh array lama yang sama. object[] objectArray = new string[] { "string 1", "string 2" }; Akan menyenangkan untuk melihat contoh yang memungkinkan saya untuk menggunakannya selama …
162 c#  c#-4.0  covariance 


4
Mengapa kovarians dan contravariance tidak mendukung tipe nilai
IEnumerable<T>adalah co-varian tetapi tidak mendukung tipe nilai, hanya tipe referensi saja. Kode sederhana di bawah ini berhasil dikompilasi: IEnumerable<string> strList = new List<string>(); IEnumerable<object> objList = strList; Tetapi mengubah dari stringmenjadi intakan mendapatkan kesalahan yang dikompilasi: IEnumerable<int> intList = new List<int>(); IEnumerable<object> objList = intList; Alasannya dijelaskan dalam MSDN : …


4
Mengapa contoh tidak mengkompilasi, alias bagaimana varians (co, kontra, dan in-) bekerja?
Sebagai lanjutan dari pertanyaan ini , dapatkah seseorang menjelaskan yang berikut di Scala: class Slot[+T] (var some: T) { // DOES NOT COMPILE // "COVARIANT parameter in CONTRAVARIANT position" } Saya memahami perbedaan antara +Tdan Tdalam deklarasi tipe (ini mengkompilasi jika saya menggunakan T). Tetapi kemudian bagaimana seseorang benar-benar menulis …

7
Konversi array co-varian dari x ke y dapat menyebabkan pengecualian run-time
Saya punya private readonlydaftar LinkLabels ( IList<LinkLabel>). Saya kemudian menambahkan LinkLabels ke daftar ini dan menambahkan label-label itu ke FlowLayoutPanelseperti berikut: foreach(var s in strings) { _list.Add(new LinkLabel{Text=s}); } flPanel.Controls.AddRange(_list.ToArray()); Menunjukkan Resharper saya peringatan: Co-variant array conversion from LinkLabel[] to Control[] can cause run-time exception on write operation. Tolong bantu …

2
Masalah pemahaman kontradiksi kovarian dengan obat generik di C #
Saya tidak mengerti mengapa kode C # berikut tidak dapat dikompilasi. Seperti yang Anda lihat, saya memiliki metode generik statis Sesuatu dengan IEnumerable<T>parameter (dan Tdibatasi menjadi IAantarmuka), dan parameter ini tidak dapat dikonversi secara implisit IEnumerable<IA>. Apa penjelasannya? (Saya tidak mencari solusi, hanya untuk memahami mengapa itu tidak berhasil). public …


2
Bagaimana Generic Covariance & Contra-variance Diimplementasikan dalam C # 4.0?
Saya tidak menghadiri PDC 2008, tetapi saya mendengar beberapa berita bahwa C # 4.0 diumumkan untuk mendukung kovarians Generik dan kontra-varian. Artinya, List<string>bisa ditugaskan ke List<object>. Bagaimana bisa? Dalam buku Jon Skeet C # in Depth , dijelaskan mengapa C # generik tidak mendukung kovariansi dan kontra-varian. Ini terutama untuk …



3
Mengapa Set yang tidak dapat diubah Scala tidak kovarian dalam tipenya?
EDIT : Tulis ulang pertanyaan ini berdasarkan jawaban asli The scala.collection.immutable.Setkelas tidak kovarian dalam parameter jenisnya. Kenapa ini? import scala.collection.immutable._ def foo(s: Set[CharSequence]): Unit = { println(s) } def bar(): Unit = { val s: Set[String] = Set("Hello", "World"); foo(s); //DOES NOT COMPILE, regardless of whether type is declared //explicitly …

2
Memahami antarmuka Kovarian dan Kontravarian di C #
Saya telah menemukan ini di buku teks yang saya baca di C #, tetapi saya mengalami kesulitan untuk memahaminya, mungkin karena kurangnya konteks. Apakah ada penjelasan singkat yang bagus tentang apa itu dan apa gunanya di luar sana? Edit untuk klarifikasi: Antarmuka kovarian: interface IBibble<out T> . . Antarmuka kontravarian: …

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.