Error del compilador CS0312
El tipo 'tipo1' no se puede usar como parámetro de tipo 'nombre' en el tipo o método genérico 'nombre'. El tipo que acepta valores NULL 'type1' no cumple la restricción de 'type2'.
Un tipo de valor que acepta valores NULL es distinto de su homólogo que no acepta valores NULL; no existe una conversión de referencia implícita ni conversión de identificación entre ellos. Una conversión boxing que acepta valores NULL no satisface una restricción de tipo genérico. En el ejemplo siguiente, el primer parámetro de tipo es un Nullable<int>
y el segundo parámetro de tipo es un System.Int32
.
Quite la restricción.
En el ejemplo siguiente, el segundo argumento de tipo es
int?
oobject
.
El código siguiente genera CS0312:
// cs0312.cs
class Program
{
static void MTyVar<T, U>() where T : U { }
static int Main()
{
MTyVar<int?, int>(); // CS0312
return 1;
}
}
Aunque un tipo de valor que acepta valores NULL es distinto de un tipo que no acepta valores NULL, se permiten varios tipos de conversiones entre valores que aceptan valores NULL y los que no los aceptan.
Comentarios de .NET
.NET es un proyecto de código abierto. Seleccione un vínculo para proporcionar comentarios: