Pregunta tonta sobre declaracion...

Iniciado por Edu, 19 Marzo 2011, 20:59 PM

0 Miembros y 1 Visitante están viendo este tema.

Edu

Hola, tengo una pregunta bastante tonta q tendria q saberla..

Cuando hago esto:


string[] a;

a[0] = "Hola";


Me sale error porq no esta declarada, esq tendria q hacer lo de string[] a = new string[10];
pero yo no quiero ponerle un valor, no se si seran 10 elementos, y me lo pide si o si :S como hago?

leogtz

Forzosamente debes de asignarle espacio.

¿para qué estás usando esto?
Código (perl) [Seleccionar]

(( 1 / 0 )) &> /dev/null || {
echo -e "stderrrrrrrrrrrrrrrrrrr";
}

http://leonardogtzr.wordpress.com/
leogutierrezramirez@gmail.com

Edu

Es para un proyecto q intento hacer pero le encontrare la vuelta para saber cual es el tamaño q tendra entonces, gracias!
Y entonces como es la cosa? yo puedo declararlo haciendo string[] a; y luego para poder ponerle algun elemento tengo q instanciarlo, poniendo a = new string[valor] entonces?

Xephiro

Cita de: XXX-ZERO-XXX en 20 Marzo 2011, 05:36 AM
Es para un proyecto q intento hacer pero le encontrare la vuelta para saber cual es el tamaño q tendra entonces, gracias!
Y entonces como es la cosa? yo puedo declararlo haciendo string[] a; y luego para poder ponerle algun elemento tengo q instanciarlo, poniendo a = new string[valor] entonces?

¿Y una lista dinamica no te sirve para tu proyecto?

porque de esa forma no tendrías que fijarle un espacio fijo.


Lo otro es que cada vez que tu array se llene lo re definas con mas espacio, pero esto te siginificaria tener que almacenar todo a otro array en forma temporal y luego volver a almacenar los datos en tu array re definido.
(no es muy buena solucion xD)

Keyen Night

La mejor opción realmente es la lista dinámica.
La Fé Mueve Montañas...
                                    ...De Dinero

La programación es más que un trabajo es más que un hobby es una pasión...

Akai

Cita de: Xephiro en 20 Marzo 2011, 06:23 AM
Lo otro es que cada vez que tu array se llene lo re definas con mas espacio, pero esto te siginificaria tener que almacenar todo a otro array en forma temporal y luego volver a almacenar los datos en tu array re definido.

De hecho, eso hace trabajo innecesario. Simplemente, crea un nuevo array del tamaño que necesites, copia, borra el primero y devuelve el otro.

(Listas dinámicas pueden tener problemas en cuanto a coste de acceso o un overhead de memoria según estén implementadas para reducir dicho tiempo de acceso)

Edu

Entonces no era una pregunta tonta, bien por mi xD
Gracias a todos! ahora me queda claro y hare lo q dijieron por ahi de copiar a otro array nuevo, vere q hago gracias!

[D4N93R]

Si exacto, la solución para eso es una lista, collection, queue, stack, depende de tus requerimientos.

Edu

Gracias!, y no es lo mismo usar arrays q listas? si es q con lista te referis a List<int> = new List<int>(10) no? seria lo mismo porq me pide valor si o si ja.

Aca dejo un ejemplo de como quiero hacer:

Código (csharp) [Seleccionar]

string[] a;

for (int i = 0; i < texto.Length; i++)
a[i] = "Hola i vale " + i.ToString();



Pero eso da error entonces cual piensan q es la mejor forma para hacerlo entonces? esq ahora me intereso lo de la Lista.

Ese codigo lo hice aca asique pero estara bien, solo q da error por el problema de q tengo q ponerle un valor si o si

Xephiro

Cita de: XXX-ZERO-XXX en 20 Marzo 2011, 18:39 PM
Gracias!, y no es lo mismo usar arrays q listas? si es q con lista te referis a List<int> = new List<int>(10) no? seria lo mismo porq me pide valor si o si ja.

Aca dejo un ejemplo de como quiero hacer:

Código (csharp) [Seleccionar]

string[] a;

for (int i = 0; i < texto.Length; i++)
a[i] = "Hola i vale " + i.ToString();



Pero eso da error entonces cual piensan q es la mejor forma para hacerlo entonces? esq ahora me intereso lo de la Lista.

Ese codigo lo hice aca asique pero estara bien, solo q da error por el problema de q tengo q ponerle un valor si o si

Utiliza ArrayList, no es necesario especificar su largo.


ArrayList al = new ArrayList();

// Agregas un objeto cualquiera
al.Add(object);


De esa forma ingresas la cantidad de datos que quieras.