CS0413 de erro do compilador
Mensagem de erro
O parâmetro de tipo de parâmetro de tipo não pode ser usado com o operador 'sistema autônomo' porque ele não tem uma restrição de tipo de classe nem uma restrição 'class'
Este erro ocorre se um tipo genérico usa o sistema autônomo operador, mas que tipo genérico não tem uma restrição de tipo de classe.The as operador só é permitido com tipos de referência, o parâmetro de tipo deve ser restrita para garantir que não é um tipo de valor. Para evitar esse erro, use uma restrição de tipo de referência ou uma restrição de tipo de classe.
Isso ocorre porque o as operador poderia retornar null, que não é um valor possível para um tipo de valor, e o parâmetro de tipo deve ser tratado sistema autônomo um tipo de valor, a menos que seja uma restrição de tipo de classe ou uma restrição de tipo de referência.
Exemplo
O exemplo a seguir gera 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);
}
}