포함 유형의 변수를 사용하여 일반 유형 인스턴스 생성
C#에서는 포함 유형의 변수를 사용하여 제네릭 유형을 직접 인스턴스화할 수 없다는 것이 직관에 어긋나는 것처럼 보일 수 있습니다. 다음 코드는 문제를 보여줍니다.
<code class="language-c#">Type k = typeof(double); List<k> lst = new List<k>(); // 编译错误</code>
이 코드는 변수 k를 사용하여 일반 유형을 지정하려고 하기 때문에 컴파일되지 않습니다. 그러나 원하는 기능을 구현하는 데 사용할 수 있는 해결 방법이 있습니다.
포함 유형의 변수를 사용하여 일반 유형 인스턴스를 생성하려면 리플렉션 및 Activator.CreateInstance()를 활용할 수 있습니다.
<code class="language-c#">var genericListType = typeof(List<>); var specificListType = genericListType.MakeGenericType(typeof(double)); var list = Activator.CreateInstance(specificListType);</code>
이 코드는 다음과 같이 작동합니다.
genericListType
일반 List<>
유형 정의를 가져옵니다. MakeGenericType()
은 일반 유형 정의를 가져오고 실제 유형 매개변수(이 경우 double
)를 지정합니다. Activator.CreateInstance()
지정된 유형 매개변수를 사용하여 특정 일반 유형을 인스턴스화합니다. 위 내용은 유형 변수를 사용하여 C#에서 일반 유형을 어떻게 인스턴스화할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!