컴파일러 오류 CS0310
업데이트: 2007년 11월
오류 메시지
'typename'은(는) 제네릭 형식 또는 메서드 'generic'에서 'parameter' 매개 변수로 사용하려면 매개 변수가 없는 public 생성자를 사용하는 비추상 형식이어야 합니다.
The type 'typename' must be a non-abstract type with a public parameterless constructor in order to use it as parameter 'parameter' in the generic type or method 'generic'
제네릭 형식 또는 메서드는 where 절에서 새 제약 조건을 정의하므로 그러한 제네릭 형식 또는 메서드의 형식 인수로 사용하려는 모든 형식에는 매개 변수 없는 public 생성자가 있어야 합니다. 이 오류가 발생하지 않도록 하려면 형식에 올바른 생성자가 있는지 확인하거나 제네릭 형식 또는 메서드의 제약 조건 절을 수정합니다.
예제
다음 샘플에서는 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());
}
}