Preguntas etiquetadas con covariance

La covarianza, la contravarianza y la invariancia describen cómo cambia la jerarquía de herencia de tipos existente cuando se somete a alguna transformación (como el uso dentro de genéricos). Si la transformación mantiene el orden de la jerarquía original, es "covariante". Si lo invierte, es "contravariante". Si lo rompe, es "invariante".



9
Ejemplo de covarianza y contravarianza del mundo real
Tengo algunos problemas para entender cómo usaría la covarianza y la contravarianza en el mundo real. Hasta ahora, los únicos ejemplos que he visto han sido el mismo ejemplo de matriz anterior. object[] objectArray = new string[] { "string 1", "string 2" }; Sería bueno ver un ejemplo que me …
162 c#  c#-4.0  covariance 


4
Por qué la covarianza y la contravarianza no admiten el tipo de valor
IEnumerable<T>es covariante pero no admite el tipo de valor, solo el tipo de referencia. El siguiente código simple se compila correctamente: IEnumerable<string> strList = new List<string>(); IEnumerable<object> objList = strList; Pero cambiar de stringa intobtendrá un error compilado: IEnumerable<int> intList = new List<int>(); IEnumerable<object> objList = intList; La razón se …



7
La conversión de matriz covariante de xay puede causar una excepción en tiempo de ejecución
Tengo una private readonlylista de LinkLabels ( IList<LinkLabel>). Luego agrego LinkLabels a esta lista y agrego esas etiquetas a un me FlowLayoutPanelgusta de la siguiente manera: foreach(var s in strings) { _list.Add(new LinkLabel{Text=s}); } flPanel.Controls.AddRange(_list.ToArray()); ReSharper me muestra una advertencia: Co-variant array conversion from LinkLabel[] to Control[] can cause run-time …








Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.