2010-06-07 75 views
5

我正在尋找類似於List<T>的東西,這將允許我有多個T。例如:List<TabItem, DataGrid, int, string, ...> = new List<TabItem, DataGrid, int, string, ...>()列表中的多個對象,C#

+1

您是否想要一個可以存儲任何這些類型的泛型列表......或者您是否想要一個可以存儲這些類型的分組的泛型列表(即每個元素都是關聯的TabItem,DataGrid,int,string等)? – 2010-06-07 15:12:35

+0

理想情況下...您如何使用或使用此列表? – 2010-06-07 15:13:40

回答

14

如果您使用的是.NET 4,你可以有一個List<Tuple<T1, T2, ...>>

否則,你的選擇是實現自己的類型。

+1

你爲我打字得到這個在我回答。 – 2010-06-07 15:15:02

+0

它不需要List >,只是Tuple 沒問題。 – Cheung 2013-05-15 03:03:02

7

創建一個類,定義你的數據結構,然後再做

var list = new List<MyClass>(); 
+0

結構會比上課好。 – Harsha 2010-06-07 16:25:25

+1

@哈沙:如果你打算髮表這個聲明,至少給我們一個理由。 – AMissico 2010-06-07 16:35:38

+0

嗨,這裏是鏈接,說結構比班級更好,但只有當他們包含很少的數據。 這裏是鏈接: http://social.msdn.microsoft.com/forums/en-US/Vsexpressvb/thread/6923cbe6-12b7-4e97-a4f5-3d9ebdfc75f2 – Harsha 2010-06-07 17:58:13

1

通常情況下,您只需要List<MyClass>其中MyClass包含所有其他成員。

1

如果它可以有任何舊類型,那麼你需要使用一個ArrayList。

如果你事先知道你在那裏有什麼,那麼你應該創建自己的結構,或者使用Tuple。

-1

看起來像是在List<object>

-1

如果您使用.net 4.0,元組是最好的。但是如果你在3.5或更低版本下工作,多維對象數組是很好的。這是代碼。我在一個對象數組中添加了3種不同的類型,並且我將它們推到列表中。可能不是您的問題的最佳解決方案,可以通過對象數組和列表來實現。看看代碼。

class Program 
{ 
    static void Main(string[] args) 
    { 
     object[,] OneObject = new object[1,3]{ {"C Sharp",4,3.5 }}; 
     List<object> MyList = new List<object>(); 
     MyList.Add(OneObject); 
     object[,] addObject = new object[1,3]{{"Java",1,1.1}}; 
     MyList.Add(addObject); 

     foreach(object SingleObject in MyList) 
     { 
      object[,] MyObject = (object[,])SingleObject; 

      Console.WriteLine("{0},{1},{2}", MyObject[0, 0], MyObject[0, 1], MyObject[0, 2]); 
     } 

     Console.Read(); 
    } 
} 
-1

而不是嘗試在C#4中,您可以在這裏給舊版本功能一個機會。

看來你不需要強類型的集合在這裏,ArrayList是最好的選擇。