2010-03-22 10 views
6

que estoy tratando de hacer una matriz dinámica en C# pero me sale un mensaje de error molesto. Aquí está mi código:No se puede hacer una matriz en C#

private void Form1_Load(object sender, EventArgs e) 
    { 
     int[] dataArray; 
     Random random = new Random(); 
     for (int i = 0; i < random.Next(1, 10); i++) 
     { 
      dataArray[i] = random.Next(1, 1000); 
     } 
    } 

Y el error:

Use of unassigned local variable 'dataArray' 

esto es sólo mi mente desconcertante. Vine de VB, así que por favor gentil, jaja.

Saludos.

Respuesta

25

No ha creado la matriz - que ha declarado la variable, pero no le da un valor.

Tenga en cuenta que las matrices siempre tienen un tamaño fijo. Si desea una estructura de datos a la que pueda seguir agregando, debe usar List<T>. Sin embargo, aconsejaría calcular el tamaño una vez en lugar de en cada iteración a través del ciclo. Por ejemplo:

private void Form1_Load(object sender, EventArgs e) 
{ 
    List<T> dataArray = new List<T>(); 
    Random random = new Random(); 
    int size = random.Next(1, 10); 
    for (int i = 0; i < size; i++) 
    { 
     dataArray.Add(random.Next(1, 1000)); 
    } 
} 

Por supuesto, si usted está trabajando hacia fuera el tamaño de antemano, se puede utilizar una matriz después de todo:

private void Form1_Load(object sender, EventArgs e) 
{ 
    Random random = new Random(); 
    int size = random.Next(1, 10); 
    int[] dataArray = new int[size]; 
    for (int i = 0; i < size; i++) 
    { 
     dataArray[i] = random.Next(1, 1000); 
    } 
} 

... pero tenga en cuenta que las matrices son considered somewhat harmful.

+0

que era un medio a través de mi respuesta cuando me di cuenta de esto. Esta es la mejor respuesta. También como otra alternativa, puede usar ArrayList en lugar de List . Sin embargo, la lista es la mejor opción si ingresan solo entradas en la matriz. – galford13x

+0

Y también, cuando se usa 'List ', a menudo se puede dar una pista sobre la capacidad inicial que hace que agregar elementos a la lista sea más rápido. –

+0

ArrayList no es recomendable ya que tenemos genéricos en .NET 2.0+. El boxeo y el desempaquetado hacen que ArrayList sea una mala elección. –

1

Tiene que inicializar la matriz. Si quiere algo dinámico, necesita usar un objeto List.

0
int[] dataArray= new int[10]; 
    Random random = new Random(); 
    for (int i = 0; i < random.Next(1, 10); i++) 
    { 
     dataArray[i] = random.Next(1, 1000); 
    } 
1

Parece que necesita inicializar el dataArray.

Haz int[] dataArray = new int[10] en lugar de sólo el código que tiene allí en la primera línea del método.

donde 10 es la cantidad de elementos se le tratando.

Si no está seguro del tamaño, sería mejor usar un ArrayList o mejor aún, de una lista.

+0

En este caso, 10 sería el * máximo * número de elementos, ya que está tratando de establecer el tamaño entre [1,10] – JeffH

0

intenta esto:

 Random random = new Random(); 
     int cnt = random.Next(1, 10); 
     int[] dataArray = new int[cnt]; 
     for (int i = 0; i < cnt; i++) 
     { 
      dataArray[i] = random.Next(1, 1000); 
     } 
Cuestiones relacionadas