使用包含型別的變數建立泛型型別實例
在 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中文網其他相關文章!