Erro do Compilador CS0310
'typename' deve ser um tipo não abstrato com um construtor público sem-parâmetros para que possa ser usado como parâmetro 'parâmetro' no tipo ou método genérico 'genérico'
O tipo ou método genérico define a new()
restrição em sua cláusula where
, portanto, qualquer tipo deve ter um construtor público sem parâmetros para ser usado como um argumento de tipo para esse tipo ou método genérico. Para evitar esse erro, verifique se o tipo tem o construtor correto ou modifique a cláusula de restrição do tipo genérico ou método.
Exemplo
O exemplo a seguir gera o erro CS0310:
// CS0310.cs
using System;
class G<T> where T : new()
{
T t;
public G()
{
t = new T();
Console.WriteLine(t);
}
}
class B
{
private B() { }
// Try this instead:
// public B() { }
}
class CMain
{
public static void Main()
{
G<B> g = new G<B>(); // CS0310
Console.WriteLine(g.ToString());
}
}
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