Apa perbedaan antara <out T>dan <T>? Sebagai contoh: public interface IExample<out T> { ... } vs. public interface IExample<T> {
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".
Apa perbedaan antara <out T>dan <T>? Sebagai contoh: public interface IExample<out T> { ... } vs. public interface IExample<T> {
Meskipun kita dapat mewarisi dari kelas dasar / antarmuka, mengapa kita tidak dapat mendeklarasikan List<> menggunakan kelas / antarmuka yang sama? interface A { } class B : A { } class C : B { } class Test { static void Main(string[] args) { A a = new C(); // OK List<A>...
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...
From Java Efektif oleh Joshua Bloch, Array berbeda dari tipe generik dalam dua cara penting. Array pertama adalah kovarian. Obat generik tidak berubah-ubah. Kovarian berarti jika X adalah subtipe Y maka X [] juga akan menjadi sub tipe Y []. Array adalah kovarian Karena string adalah subtipe dari...
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...
На этот вопрос есть ответы на Stack Overflow на русском : Ковариантность и контрвариантность обобщений Saya mengalami kesulitan memahami perbedaan antara kovarians dan contravariance.
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...
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
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...
Hari ini, saya membaca beberapa artikel tentang Kovarian, Kontravarian (dan Selisih) di Jawa. Saya membaca artikel Wikipedia bahasa Inggris dan Jerman, serta beberapa postingan blog dan artikel lain dari IBM. Tapi saya masih sedikit bingung tentang apa sebenarnya ini? Beberapa mengatakan ini...
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...
Apa yang dimaksud dengan tipe pengembalian kovarian di Jawa? Dalam pemrograman berorientasi objek secara
Tertutup . Pertanyaan ini perlu lebih difokuskan . Saat ini tidak menerima jawaban. Ingin memperbaiki pertanyaan ini? Perbarui pertanyaan agar fokus pada satu masalah hanya dengan mengedit posting ini . Tutup 5 tahun lalu . Perbaiki pertanyaan ini...
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] =...
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...
Ini mengkompilasi dengan benar dalam C # 7.3 (Kerangka 4.8): (string, string) s = ("a", "b"); (object, string) o = s; Saya tahu ini adalah gula sintaksis untuk yang berikut, yang juga mengkompilasi dengan benar: ValueTuple<string, string> s = new ValueTuple<string, string>("a",...