Erro do Compilador CS0311
O tipo 'type1' não pode ser usado como parâmetro de tipo 'T' no tipo ou método genérico '<name>'. Não há nenhuma conversão de referência implícita de 'type1' para 'type2'.
Quando uma restrição é aplicada a um parâmetro de tipo genérico, uma conversão implícita de identidade ou referência deve existir do argumento concreto para o tipo de restrição.
Para corrigir este erro
Altere o argumento usado para criar a classe.
Se você for o proprietário da classe, será possível remover a restrição ou fazer algo para habilitar uma referência implícita ou conversão de identidade. Por exemplo, é possível fazer com que o segundo tipo herde do primeiro.
Exemplo
// cs0311.cs
class B {}
class C {}
class Test<T> where T : C
{ }
class Program
{
static void Main()
{
Test<B> test = new Test<B>(); //CS0311
}
}
Caso esse erro ocorra ao tentar usar um argumento de tipo de valor, observe que uma conversão numérica implícita, por exemplo, de short
para int
, não atende a um parâmetro de tipo genérico.
Confira também
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