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#?
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#?
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();
Je déteste int []. J'aime la liste
-1: Vous n'avez aucune idée qu'il serait plus facile d'utiliser une liste! La question concerne les tableaux. – Adrian
@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
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.
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
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
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
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);
Cette méthode n'efface pas le tableau littéralement, mais définit simplement 0/false/null pour chaque élément dans le tableau. –
@ 1_bug Qu'est-ce que "clearing" pourrait vouloir dire d'autre? – Nyerguds
Pourquoi ne pas simplement créer nouveau tableau et l'affecter à la variable de tableau existant?
x = new int[x.length];
Parce que cela signifie que le garbage collector a du travail supplémentaire pour nettoyer tout ce que vous laissez en mémoire. – Nyerguds
Pour deux tableaux de dimensions, vous devez faire comme ci-dessous:
Array.Clear(myArray, 0, myArray.GetLength(0)*myArray.GetLength(1));
Comment pouvez-vous avoir une variable globale en C#? –
@rep_movsd c'est une autre question;) lol –
Est-ce que le nombre d'éléments change à chaque itération de la boucle? Ce serait bien de voir du code. –