2010-06-07 7 views
5

Estoy buscando algo similar a List<T>, que me permitiría tener múltiples T. Por ejemplo: List<TabItem, DataGrid, int, string, ...> = new List<TabItem, DataGrid, int, string, ...>().Múltiples objetos en la lista, C#

+1

¿Desea una Lista genérica que pueda almacenar cualquiera de esos tipos ... o desea una Lista genérica que pueda almacenar una agrupación de esos tipos (es decir, cada elemento es un TabItem asociado, DataGrid, int, cadena , etc.)? –

+0

e idealmente ... ¿cómo usarías o consumirías esta lista? –

Respuesta

14

Si está utilizando .NET 4, usted podría tener un List<Tuple<T1, T2, ...>>

De lo contrario, su opción es poner en práctica su propio tipo .

+1

Tienes esto en que yo estaba escribiendo mi responder. –

+0

No necesita List >, solo Tuple está bien. – Cheung

7

Crear una clase que define la estructura de datos, y luego hacer

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

estructura sería mejor que la clase. – Harsha

+1

@Harsha: si va a hacer esta declaración, al menos denos una razón por la cual. – AMissico

+0

hola, aquí está el enlace que dice que las estructuras son mejores que las clases, pero solo cuando contienen pocos datos. Aquí está el enlace: http://social.msdn.microsoft.com/forums/en-US/Vsexpressvb/thread/6923cbe6-12b7-4e97-a4f5-3d9ebdfc75f2 – Harsha

1

Normalmente solo tendrías List<MyClass> donde MyClass tenía todos esos otros como miembros.

1

Si puede tener cualquier tipo antiguo, entonces necesita usar una ArrayList.

Si sabe de antemano lo que tendrá allí, entonces debe crear su propia estructura o utilizar una Tupla.

-1

Parece que está buscando List<object>?

-1

Tuplas son las mejores si está utilizando .net 4.0. Pero si está trabajando 3.5 o menos, la matriz de objeto multidimensional es buena. Aquí está el código. He agregado 3 tipos diferentes en una matriz de objetos y presioné el mismo para listar. Puede que no sea la mejor solución para su pregunta, se puede lograr con la matriz y la lista de objetos. Eche un vistazo al código.

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

En lugar de intentar en C# 4, puede dar una oportunidad a la versión anterior.

Parece que no necesita una colección fuertemente tipada aquí, en ese caso ArrayList es la mejor opción.

Cuestiones relacionadas