2010-04-20 3 views
6

J'ai une variable globale int[] et je veux effacer ses données et le remplir à nouveau dans une boucle.Comment faire pour effacer un tableau

Comment cela est-il possible en C#?

+5

Comment pouvez-vous avoir une variable globale en C#? –

+0

@rep_movsd c'est une autre question;) lol –

+0

Est-ce que le nombre d'éléments change à chaque itération de la boucle? Ce serait bien de voir du code. –

Répondre

9

Ne serait-il pas plus facile d'utiliser une liste à la place.

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

Et puis:

something.Add(somevalue); 

Et clair:

something.Clear(); 
+0

Je déteste int []. J'aime la liste . +1 –

+11

-1: Vous n'avez aucune idée qu'il serait plus facile d'utiliser une liste! La question concerne les tableaux. – Adrian

+0

@Adrian: Il est possible que l'OP ne soit pas familier avec List <>. Ce serait génial que nous suggérions de meilleures alternatives. Il n'y a rien de mal à cela. +1 pour cette réponse – 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 
    } 

Pourquoi le supprimer? Affectez juste de nouvelles valeurs.

+0

Je peux voir de nombreuses raisons pour lesquelles vous voudriez un tableau zéro'd propre, le débogage par exemple, voir les données entrant dans le tableau serait beaucoup plus facile à surveiller que l'écrasement des données. – Adrian

+1

Je change certaines valeurs et l'autre doit être "0". Je peux le faire de cette façon mais je cherchais 1 code de ligne. – LIX

4

Ce n'est pas bonne réponse pour votre poste, mais vous pouvez utiliser cette logique en fonction de votre besoin. ici est un code extraits tirés 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(); 
    } 
} 

et la sortie de c'est:

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

La méthode Array.Clear() statique « définit une gamme d'éléments de la matrice à zéro, false, ou Rien, selon le type d'élément ". Si vous voulez effacer votre tableau entier, vous pouvez utiliser cette méthode fournir un 0 comme indice de départ et myArray.Length comme longueur:

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

Cette méthode n'efface pas le tableau littéralement, mais définit simplement 0/false/null pour chaque élément dans le tableau. –

+0

@ 1_bug Qu'est-ce que "clearing" pourrait vouloir dire d'autre? – Nyerguds

1

Pourquoi ne pas simplement créer nouveau tableau et l'affecter à la variable de tableau existant?

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

Parce que cela signifie que le garbage collector a du travail supplémentaire pour nettoyer tout ce que vous laissez en mémoire. – Nyerguds

0

Pour deux tableaux de dimensions, vous devez faire comme ci-dessous:

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