[ Foro de C# ]

Vectores en C#

22-Jun-2015 01:07
Invitado (Zikuto)
6 Respuestas

Buenas a todos. Hace tiempo estudie C/C++, ahora estoy en C# y hay una caracteristica que echo de menos....los vectores o arrays indefinidas. Para quien no.lo sepa, un vector es un array que al declararla no es necesario asignar un numero determinado, osea que se van creando nuevos array a medida que los usas. En C# hay algun metodo para lograr esto?

Gracias por adelantado!!!


22-Jun-2015 16:50
Daniel Segura (+2)

Buenas! En C# tienes los ArrayList. Como un ejemplo vale mas que mil palabras, te dejo uno:

 
ArrayList myAL = new ArrayList();
myAL.Add("Hello");
myAL.Add("World");
myAL.Add("!");
 


Aqui vemos como se crea un ArrayList y como le vamos añadiendo strings en este caso. Si necesitas mas informacion acerca de estos puedes mirar en
https://msdn.microsoft.com/es-es/library/system.collections.arraylist(v=vs.110).aspx

Mucha suerte!


23-Jun-2015 00:35
Invitado (Zikuto)

Buenas, gracias por responder lo primero. El ArrayList crea un array en el que cada string introducida forma parte de un acceso diferente? Me explico:

En el ejemplo que has dado tu antes si quisiera acceder a la palabra "World" deberia acceder como myAL[1]   o se guarda todo en un solo string? y puedes añadir cualquier tipo de dato al arraylist o deben ser todos los elementos del mismo tipo?
Siento preguntarlo asi pero no podre tener ordenador en unos dias ^^u


24-Jun-2015 15:04
Daniel Segura (+2)

Buenas! Se guarda en un acceso diferente. Tu puedes acceder a cualquiera de esos string como tu bien has puesto pero con 0.(myAL[0]). Como tu bien mencionas, en un arraylist puedes guardar cualquier tipo de datos, tanto nativos como tus propios objetos.  Esto tiene su parte buena pero tambien su parte mala, cuidado con usar un string como si fuese un numero o un numero como si fuese un string.
Saludos!


25-Jun-2015 01:45
Nacho Cabanes (+31)

Como te comenta Daniel, un ArrayList permite guardar datos de cualquier tipo, y tienes que ser tú quien sepa lo que sacas y quien fuerce una conversión de tipos cuando sea necesario.

El equivalente más directo de un "vector" de C++ sería posiblemente un "List<>" en C#, que sólo permite datos de un cierto tipo, que se añaden al final de los datos o se insertan en posiciones concretas, y a los que se puede acceder indicando su posición numérica.


25-Jun-2015 06:43
Invitado (Zikuto)

Buenas!! Primero deciros que ya tengo pc y pude probarlo por mi mismo. Daniel, entonces estaba en lo correcto, para acceder a la palabra "world' de tu ejemplo seria myAL[1] en lugar de myAL[0].
Respondiendote a ti Nacho, he de decir que mi primer contacto con C/C++ lo tuve con tu curso :)
Referente a la similitud con el vector decir que tambien se puede usar ArrayList con el tipo predefinido, osea, en lugar de "new ArrayList()" que abriria un array de tipo predeterminado seria poner entre los parentesis el tipo de dato para limitar a ese tipo "new ArrayList(string)".

Muchas gracias por contestar a mi duda chicos, a cualquier cosa podeis añadirme al skype si quereis por el usuario [Censurado]

Nos vemos!!!


27-Jun-2015 12:46
Nacho Cabanes (+31)

Me tomo la libertad de censurar tu usuario de Skype, para que no te bombardeen.

El problema de los ArrayList es que tienes que hacer una conversión de tipos para cada datos que saques (no es problema cuando son cadenas, sí lo es cuando son objetos de tipos más complejos).

Por eso, un List<string> (o con cualquier otro tipo base) es una alternativa más elegante, y más cercana a la clase Vector de C++.






(No se puede continuar esta discusión porque tiene más de dos meses de antigüedad. Si tienes dudas parecidas, abre un nuevo hilo.)