¿Cómo guardar varias strings en un arreglo c#?

Estoy trabajando en un proyecto en el que necesito guardar varios strings a la vez en tiempo de ejecución, para posteriormente usar esos strings en el código.

El problema esta en que la cantidad de cadenas string que necesito guardar van a ser definidas por el usuario, lo que provoca que no pueda tener una cantidad fija de variables string para guardar todos los nombres que el usuario quiera guardar.

  public string Contenido_Celda;
  int espacios = 0;
  public void contenido_de_celdas()
        {
            char[][] arr1  = new char[espacios][];     
            if (Cont_Cell == string.Empty)
            {
                arr1[num][200] = Convert.ToChar("Empty");              
            }
            else
            {
                arr1[num][200] = Convert.ToChar(Contenido_Celda);
            }
            espacios += 1;
            num      += 1;
         }

Ese es el pedazo de codigo que se supone que hace eso.

Se supone que ese pedazo de codigo hace que cada vez que se llama a esa funcion, guarda el contenido de la variable "Contenido_Celda" dentro de una celda del arreglo "arr1", por ejemplo, si Contenido_Celda == "Hector" entonces el nombre "Hector" se guarda dentro de una celda del arreglo, pero en caso de que Contenido_Celda este vacia, entonces guarda la palabra "Empty" en la celda del arreglo, depues a la variable "num" y a la variable "espacios" se les aumenta 1 para que la proxima vez que se vuelva a llamar a la funcion, el contenido se guarde en la celda siguiente del array.

Pero cuando corro el visual studio, me aparece un error de:

 'System. IndexOutOfRangeException' 
Índice fuera de los límites de la matriz.

Ya trate de corregir este error de varias maneras, pero nada me resulta,

Especificamente, el error aparece en las lineas de codigo:

arr1[num][200] = Convert.ToChar("Empty");

y

  arr1[num][200] = Convert.ToChar(Cont_Cell);

Espero me puedan auxiliar si no es mucha molestia :D

De antemano muchas gracias :DDDDDD

Respuesta
1

Diría, aunque no estoy al 100% seguro, que estás utilizando una matriz pero no estás inicializando el "ancho" de la matriz.

Por lo tanto al hacer...

 arr1[num][200] = Convert.ToChar("Empty");   

estás accediendo a la posición 200 que no has reservado previamente y el num directamente no se de donde lo estás sacando porque veo que se define después de utilizarlo por primera vez así que puede ser que también sea este el error.

Una forma de que no tengas este problema sería inicializar en un principio la matriz:

char[][] arr1  = new char[espaciosX][espaciosY];

O, inicializar cada vez que accedas a una parte de la matriz...

if (Cont_Cell == string.Empty) {
    // Se intenta acceder al espacio de memoria
    try {
        arr1[num][200] = Convert.ToChar("Empty");
    } catch(Error e) {
        // En caso de que este acceso de un error,
        // reservamos memoria y después intentamos acceder nuevamente.
        arr1[num] = new char[espaciosY];
        arr1[num][200] = Convert.ToChar("Empty");
    }
}
//...

No soy muy ducho con C# así que es posible que la sintaxis no sea correcta, pero la idea sería esa.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas