Perguntas com a marcação «covariance»

Covariância, contravariância e invariância descrevem como a hierarquia de herança de tipo existente muda quando sujeita a alguma transformação (como o uso em genéricos). Se a transformação mantém a ordem da hierarquia original, ela é "covariante". Se o inverter, é "contravariante". Se quebrar, é "invariante".



9
Exemplo de covariância e contravariância no mundo real
Estou com um pouco de dificuldade para entender como usaria covariância e contravariância no mundo real. Até agora, os únicos exemplos que vi foram o mesmo exemplo antigo de matriz. object[] objectArray = new string[] { "string 1", "string 2" }; Seria bom ver um exemplo que me permitisse usá-lo …
162 c#  c#-4.0  covariance 


4
Por que covariância e contravariância não suportam tipo de valor
IEnumerable<T>é co-variante, mas não suporta o tipo de valor, apenas o tipo de referência. O código simples abaixo é compilado com sucesso: IEnumerable<string> strList = new List<string>(); IEnumerable<object> objList = strList; Mas mudar de stringpara intreceberá um erro compilado: IEnumerable<int> intList = new List<int>(); IEnumerable<object> objList = intList; O motivo …



7
Conversão de matriz de co-variante de x para y pode causar exceção em tempo de execução
Eu tenho uma private readonlylista de LinkLabels ( IList<LinkLabel>). Mais tarde, adiciono LinkLabels a esta lista e adiciono esses rótulos da FlowLayoutPanelseguinte maneira: foreach(var s in strings) { _list.Add(new LinkLabel{Text=s}); } flPanel.Controls.AddRange(_list.ToArray()); Mostra ReSharper me um aviso: Co-variant array conversion from LinkLabel[] to Control[] can cause run-time exception on write …








Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.