>백엔드 개발 >C++ >유형 변수를 사용하여 C#에서 일반 유형을 어떻게 인스턴스화할 수 있습니까?

유형 변수를 사용하여 C#에서 일반 유형을 어떻게 인스턴스화할 수 있습니까?

Barbara Streisand
Barbara Streisand원래의
2025-01-13 07:29:11704검색

How Can I Instantiate Generic Types in C# Using Type Variables?

포함 유형의 변수를 사용하여 일반 유형 인스턴스 생성

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>

이 코드는 다음과 같이 작동합니다.

  1. genericListType 일반 List<> 유형 정의를 가져옵니다.
  2. MakeGenericType()은 일반 유형 정의를 가져오고 실제 유형 매개변수(이 경우 double)를 지정합니다.
  3. Activator.CreateInstance() 지정된 유형 매개변수를 사용하여 특정 일반 유형을 인스턴스화합니다.

위 내용은 유형 변수를 사용하여 C#에서 일반 유형을 어떻게 인스턴스화할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.