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

14
En C #, ¿por qué no se puede almacenar un objeto List <string> en una variable List <object>?
Parece que un objeto List no se puede almacenar en una variable List en C #, y ni siquiera se puede convertir explícitamente de esa manera. List&lt;string&gt; sl = new List&lt;string&gt;(); List&lt;object&gt; ol; ol = sl; da como resultado No se puede convertir implícitamente el tipo System.Collections.Generic.List&lt;string&gt;aSystem.Collections.Generic.List&lt;object&gt; Y entonces... List&lt;string&gt; …

9
¿C # admite la covarianza de tipo de retorno?
Estoy trabajando con el marco .NET y realmente quiero poder crear un tipo de página personalizado que utilice todo mi sitio web. El problema surge cuando intento acceder a la página desde un control. Quiero poder devolver mi tipo específico de página en lugar de la página predeterminada. ¿Hay alguna …
84 c#  covariance 

15
C #: invalidar tipos de retorno
¿Hay alguna forma de anular los tipos de retorno en C #? Si es así, ¿cómo, y si no, por qué y cuál es la forma recomendada de hacerlo? Mi caso es que tengo una interfaz con una clase base abstracta y sus descendientes. Me gustaría hacer esto (está bien, …

1
¿Qué hace que ValueTuple sea covariante?
Esto se compila correctamente en C # 7.3 (Framework 4.8): (string, string) s = ("a", "b"); (object, string) o = s; Sé que esto es azúcar sintáctico para lo siguiente, que también se compila correctamente: ValueTuple&lt;string, string&gt; s = new ValueTuple&lt;string, string&gt;("a", "b"); ValueTuple&lt;object, string&gt; o = s; Por lo …

1
C # para cada comportamiento inesperado
¿Por qué el compilador de C # permite que esto se compile y genera una excepción de tiempo de ejecución cuando se ejecuta? class Program { static void Main(string[] args) { IEnumerable&lt;Test&gt; list = new List&lt;Test&gt;() { new Test() }; foreach(IDisposable item in list) { } } } public class …
8 c#  covariance 
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.