2013-07-05 52 views
0

我不知道是否有可能創建不同類型的二維List。換句話說,我不知道這樣的事情是可能的:不同類型的二維列表

List<T, U> list = new List<T, U>(); 

其中TU任何兩種不同類型。

是否有可能實現這一點,而不訴諸於struct s或class es?

+0

你想用這個完成什麼? –

+0

你想要得到像Dictionary一樣的東西嗎?或者,請再解釋一下自己? – Styxxy

+0

我想保留一個索引列表,並分別爲'int'和'string'類型的值。 – Raptor

回答

4

這聽起來像你對我正在尋找的是一個Dictionary<T,V>

var dictionary = new Dictionary<int, string>(); 
dictionary[3] = "three"; 
dictionary[7] = "seven"; 
foreach(var keyValuePair in dictionary) 
{ 
    Console.WriteLine("{0}: {1}", keyValuePair.Key, keyValuePair.Value); 
} 
// 3: three 
// 7: seven 
0

第一種方法:繼承。但你可以去創建一個List<Object>。對象不關心你在那裏扔什麼。但是限制到兩個類別,不,這是不可能的。

+2

這在很多層面上都是一個壞主意。他可以放置任何物品,但是如果不投射它,他將無法訪問任何物品。對於任何兩值的「對象」,您需要一個類或一個結構,所以不妨繼續創建一個類(這是問題不要做的)。無論如何,如果你想要一個對象列表,不妨使用舊的'ArrayList',但建議不要這樣做。 –

+0

我知道,但它確實有效。但看到其他答案,我可能會誤解這個問題。 –

3

你可以做這樣的事情,但我不知道這是否是你所需要的:

List<Tuple<int, string>> list = new List<Tuple<int, string>>(); 
list.Add(Tuple.Create<int, string>(2, "two")); 
+0

如果OP需要能夠將整數映射到多個字符串,這是一個很好的解決方案。一個'Dictionary'每個鍵需要一個值。 –

+1

@ p.s.w.g我不同意這一點。你可以簡單地使用一個'Dictionary >'(或者如果他希望在這個鍵中有唯一性的話,甚至可以使用'Hashset ')。關於元組列表的問題是一個關鍵的查找將在O(N)中。現在這可能不是問題,如果他只是迭代,但只要你想按鍵查找,就可以使用字典。 –

+0

@SimonBelanger當然可以。這也是我的願望。我說這是一個很好的解決方案,並不是它很理想。 –

3

你可以使用一個Dictionary<T, U>

var list = new Dictionary<T, U>(); 

T的d U的類型是你想要的。