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".

162
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...

84
C # suporta covariância de tipo de retorno?

Estou trabalhando com o .NET framework e realmente quero ser capaz de fazer um tipo de página personalizado que todo o meu site use. O problema surge quando tento acessar a página de um controle. Desejo poder retornar meu tipo específico de página em vez da página padrão. Há alguma maneira de...

35
O que torna o ValueTuple covariante?

Isso é compilado corretamente no C # 7.3 (Framework 4.8): (string, string) s = ("a", "b"); (object, string) o = s; Eu sei que isso é açúcar sintático para o seguinte, que também compila corretamente: ValueTuple<string, string> s = new ValueTuple<string, string>("a",...

8
C # foreach comportamento inesperado

Por que o compilador C # permite que isso compile e lança uma exceção de tempo de execução quando executado? class Program { static void Main(string[] args) { IEnumerable<Test> list = new List<Test>() { new Test() }; foreach(IDisposable item in list) { } } } public class...