제네릭 클래스의 기본 생성자의 구문은 무엇입니까?


87

제네릭 클래스에 대한 기본 생성자를 구현하는 것이 C #에서 금지되어 있습니까?

그렇지 않은 경우 아래 코드가 컴파일되지 않는 이유는 무엇입니까? (내가 제거 <T>하면 컴파일됩니다)

제네릭 클래스에 대한 기본 생성자를 정의하는 올바른 방법은 무엇입니까?

public class Cell<T> 
{
    public Cell<T>()
    {
    }
}

컴파일 시간 오류 : 오류 1 클래스, 구조체 또는 인터페이스 멤버 선언의 잘못된 토큰 '('

답변:


145

생성자에 유형 매개 변수를 제공하지 않습니다. 이것이 당신이 그것을해야하는 방법입니다.

public class Cell<T> 
{
    public Cell()
    {
    }
}

11

유형이 속성으로 필요한 경우 :

public class Cell<T>
{
    public Cell()
    {
        TheType = typeof(T);
    }

    public Type TheType { get;}
}

6

그리고 유형의 인스턴스를 삽입해야하는 경우 :

public class Cell<T>
{
    public T Thing { get; }

    public Cell(T thing)
    {
        Thing = thing;
    }
}
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.