2014-03-04 111 views
1

嗨,我想知道是否有可能做類似這樣的事情。通用類型聲明一個列表

int myInt = 0; 
Type myType = myInt.GetType(); 
List<myType> lst = new List<myType>(); 

我知道這裏的變量myType舊型int,但我想知道,如果它有沒有辦法做一些類似的一個方面,我不知道的myInt

類型這讓我問自己爲什麼這是無效的。我知道這很愚蠢,但爲什麼它是無效的?

List<typeof(int)> myList = new List<typeof(int)>();

所以我希望做行之間的東西在這裏。有什麼辦法可以獲得與其中任何類似的東西嗎?

+0

您可以使用Reflexion來做到這一點。看看這裏:http://stackoverflow.com/questions/232535/how-to-use-reflection-to-call-generic-method –

+5

一旦你創建它,你不能真正做很多的清單, 。你可能使用哪個變量來允許你使用任何依賴泛型參數的方法?它*可能*,但很少*有用*。 – Servy

回答

2

是的,這是可能的,但你必須添加一些反思。

void Main() 
{ 
    int myInt = 0; 
    Type myType = myInt.GetType(); 

    var listType = typeof(List<>).MakeGenericType(new Type[]{myType}); 
    var list = Activator.CreateInstance(listType); 
} 
+1

這是可能的,但也是無用的,因爲'list'靜態類型爲'object'。要實際使用它,無論是反射或「動態」將是必需的。 –

+0

我肯定會認爲這個用例是有限的,但我不知道提問者的用例是怎樣的。 –

+0

最後,我放棄了試圖讓自己的東西具有通用性,因爲在當前的情況下,我只需要處理Guid,但自編譯以來,它就回答了我的問題。 –