Erro do Compilador CS0413
O parâmetro de tipo 'type parameter' não pode ser usado com o operador 'as', pois não tem uma restrição de tipo de classe nem uma restrição 'class'
Esse erro ocorrerá se um tipo genérico usar o operador as, mas não tiver uma restrição de tipo de classe. O operador as
será permitido somente com tipos de referência e tipos de valor anuláveis, assim, o parâmetro de tipo deve estar restringido para assegurar que não é um tipo de valor. Para evitar esse erro, use uma restrição de tipo de classe ou uma restrição de tipo de referência.
Isso ocorre porque o operador as
pode retornar null
, que não é um valor possível para um tipo de valor e o parâmetro de tipo deve ser tratado como um tipo de valor, a menos que ele seja uma restrição de tipo de classe ou uma restrição de tipo de referência.
Exemplo
O exemplo a seguir gera o erro 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);
}
}
Comentários
https://aka.ms/ContentUserFeedback.
Em breve: Ao longo de 2024, eliminaremos os problemas do GitHub como o mecanismo de comentários para conteúdo e o substituiremos por um novo sistema de comentários. Para obter mais informações, consulteEnviar e exibir comentários de