2012-09-09 21 views
8

Soy un programador de Java, he usado un Java ArrayList antes y ahora quiero tener algo así en C#. Algunas de las opciones que necesito son en este código Java:C# equivalente para el arraylist java que admite obtener, establecer y eliminar cierto índice

String[] strs = new String[]{"str1" , "str2" , "str3" , "str4"}; 
ArrayList arrayList = new ArrayList(35); 
arrayList.add(strs[0]); 
arrayList.add(strs[1]); 
arrayList.remove(0); 
arrayList.set(0, strs[2]); 
String s = (String) arrayList.get(1); 

que utiliza C# ArrayList y LinkedList, pero que no tienen estas opciones simples que necesito. ¿Hay alguna otra opción en C# que respalde el acceso a objetos con índices, insertando y eliminando de cierto índice?

+2

Use 'List ', 'List [index]' y ['List.RemoveAt'] (http://msdn.microsoft.com/en-us/library/5cw9x18z (v = vs.80) .aspx) –

Respuesta

13

uso List <T>

String[] strs = new String[]{"str1" , "str2" , "str3" , "str4"}; 
List<string> stringList = new List<string>(); 
stringList.add(strs[0]); 
stringList.add(strs[1]); 
stringList.RemoveAt(indexYouWantToDelete)  
String s = stringList[0]; 

ArrayLists en C# aunque provienen de la era pre-genérica. Como C# 2.0 tenemos colecciones genéricas, List <T> es un ejemplo de eso. Como dice el comentario en esta respuesta, si usa una ArrayList, los elementos que coloque en la lista de arrays deberán estar enmarcados (al Object, porque eso es lo único que una ArrayList toma como entrada). Si quieres acceder a ellos después de eso, tendrán que ser desempaquetados explícitamente, como lo que hiciste en tu pregunta. (->String s = (String) arrayList.get(1);)

usando colecciones genéricas (como List <T>), no existe un boxeo más, ya que el compilador sabe qué tipo de datos de la lista de su contenido concreto. En este caso, Cuerdas. También podría tener un List<int>, List<char> o List<whatever>, y puede usar la misma función de indexación en ellos.

+2

puede valer la pena señalar que el uso de 'ArrayList' es * no * recomendado ya que no es genérico y causa el boxeo. – Adam

+0

¡gracias! en primer lugar, pensé que LinkedList es más avanzado que la Lista pura y no lo mencioné. – sajad

+0

@codesparkle, sí, iba a hacer eso. editado en ahora! – Thousand

0

Uso List<T> ...........................................

que tiene AddRemove, RemoveAt indexadores como list[i] etc.

Cuestiones relacionadas