首頁 > 後端開發 > C++ > 如何在運行時動態建立泛型類型實例?

如何在運行時動態建立泛型類型實例?

Patricia Arquette
發布: 2025-01-13 07:17:42
原創
216 人瀏覽過

How Can I Dynamically Create a Generic Type Instance at Runtime?

運行時動態建立泛型類型實例

在某些情況下,可能需要根據執行時間確定的類型動態建立泛型類型的實例。這可能具有挑戰性,因為泛型類型通常在編譯時定義。

一種實現此目標的方法是利用反射。以下是一種變通方法,可讓您使用包含目標類型的變數建立泛型類型實例:

<code class="language-csharp">Type k = typeof(double);
Type genericListType = typeof(List<>); // 注意这里<>
var specificListType = genericListType.MakeGenericType(k);
var list = Activator.CreateInstance(specificListType);</code>
登入後複製

MakeGenericType 方法接受單一 Type 參數,並傳回一個新的 Type 對象,該物件表示具有指定類型參數的泛型類型。在本例中,我們傳入 doubleType 來指定目標類型。

取得具體的泛型類型後,我們可以使用 Activator.CreateInstance 方法實例化該類型的物件。此方法使用反射機制動態建立指定物件類型的新實例。

透過此方法,您可以根據執行時間確定的類型動態建立泛型類型實例,從而實現更大的靈活性和程式碼適應性。 請注意,typeof(List) 需要改為 typeof(List<>) 才能正確表示泛型類型List<T>

以上是如何在運行時動態建立泛型類型實例?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板