Nota
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
El parámetro de tipo 'type parameter' no se puede usar con el operador 'as' porque no tiene ninguna restricción de tipo de clase ni una restricción 'class'
Este error aparece si un tipo genérico usa el operador as, pero dicho tipo genérico no tiene una restricción de tipo de clase. Solo se permite el operador as
con tipos de referencia y tipos de valor NULL, por lo que el parámetro de tipo debe restringirse para garantizar que no es un tipo de valor. Para evitar este error, use una restricción de tipo de clase o una restricción de tipo de referencia.
Esto se debe a que el operador as
podría devolver null
, que no es un valor permitido para un tipo de valor y el parámetro de tipo debe tratarse como un tipo de valor a menos que sea una restricción de tipo de clase o una restricción de tipo de referencia.
En el ejemplo siguiente se genera la advertencia CS0413.
// CS0413.cs
// compile with: /target:library
class A {}
class B : A {}
class CMain
{
A a = null;
public void G<T>()
{
a = new A();
System.Console.WriteLine (a as T); // CS0413
}
// OK
public void H<T>() where T : A
{
a = new A();
System.Console.WriteLine (a as T);
}
}
Comentarios de .NET
.NET es un proyecto de código abierto. Selecciona un vínculo para proporcionar comentarios: