2010-04-20 15 views
6

Tengo una variable global int[] y quiero borrar sus datos y volver a llenarlos en un bucle.Cómo borrar una matriz

¿Cómo podría esto posible en C#?

+5

Cómo se puede tener una variable global en C#? –

+0

@rep_movsd esa es otra pregunta;) lol –

+0

¿Cambia el número de elementos en cada iteración del ciclo? Sería bueno ver algún código. –

Respuesta

9

No sería más fácil usar una lista en su lugar.

public List<int> something = new List<int>(); 

Y luego:

something.Add(somevalue); 

Y para borrar:

something.Clear(); 
+0

Odio int []. Me encanta List . +1 –

+11

-1: ¡NO tienes idea de que sería más fácil usar una lista! La pregunta es acerca de las matrices. – Adrian

+0

@Adrian: Es posible que el OP no esté familiarizado con List <>. Sería genial que sugiriéramos mejores alternativas. No tiene nada de malo. +1 para esta respuesta. – Nayan

0
int[] x 
    int[] array_of_new_values 

    for(int i = 0 ; i < x.Length && i < array_of_new_values.Length ;i++) 
    { 
     x[i] = array_of_new_values[i]; // this will give x[i] its new value 
    } 

¿Por qué borrarlo? Solo asigne nuevos valores.

+0

Puedo ver muchas razones por las que desearía una matriz cero limpia, depuración, por ejemplo, ver que los datos que entran en la matriz serían mucho más fáciles de supervisar que sobrescribir datos. – Adrian

+1

Cambio algunos valores y el otro debe ser "0". Puedo hacerlo de esta manera, pero estaba buscando 1 código de línea. – LIX

4

Ésta no es la respuesta correcta para su puesto, pero se puede utilizar esta lógica de acuerdo a su necesidad. que aquí hay una Fragmentos de código tomada de here

using System; 

class ArrayClear 
{ 

    public static void Main() 
    { 
     int[] integers = { 1, 2, 3, 4, 5 }; 
     DumpArray ("Before: ", integers); 
     Array.Clear (integers, 1, 3); 
     DumpArray ("After: ", integers); 
    } 

    public static void DumpArray (string title, int[] a) 
    { 
     Console.Write (title); 
     for (int i = 0; i < a.Length; i++) 
     { 
     Console.Write("[{0}]: {1, -5}", i, a[i]); 
     } 
     Console.WriteLine(); 
    } 
} 

y salida de este es:

Before: [0]: 1 [1]: 2 [2]: 3 [3]: 4 [4]: 5 
After: [0]: 1 [1]: 0 [2]: 0 [3]: 0 [4]: 5 
19

El Array.Clear() método estático "establece una serie de elementos en la matriz a cero, a falso, o para Nada, dependiendo del tipo de elemento ". Si desea borrar toda la matriz, puede utilizar este método una proporcionarla 0 como índice de inicio y myArray.Length como longitud:

Array.Clear(myArray, 0, myArray.Length); 
+0

Este método no elimina la matriz literalmente, sino que establece 0/false/null para cada elemento en la matriz. –

+0

@ 1_bug ¿Qué otra cosa podría significar "limpieza"? – Nyerguds

1

¿Por qué no crear una nueva matriz y asignarle a la variable de matriz existente?

x = new int[x.length]; 
+0

Porque eso significa que el recolector de basura tiene trabajo extra limpiando todo lo que dejas atrás en la memoria. – Nyerguds

0

Para matrices de dos dimensiones, que debe hacer como bramido:

Array.Clear(myArray, 0, myArray.GetLength(0)*myArray.GetLength(1));