2010-06-07 81 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是最好的选择。