2010-04-20 12 views
6

Mam zmienną globalną int[] i chcę wyczyścić jej dane i wypełnić ponownie w pętli.Jak wyczyścić tablicę

Jak to możliwe w języku C#?

+5

Jak można mieć zmienną globalną w C#? –

+0

@rep_movsd to kolejne pytanie;) lol –

+0

Czy liczba elementów zmienia się w każdej iteracji pętli? Byłoby dobrze zobaczyć jakiś kod. –

Odpowiedz

9

Nie byłoby łatwiej użyć zamiast tego listy.

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

A potem:

something.Add(somevalue); 

I jasne:

something.Clear(); 
+0

Nienawidzę int []. Uwielbiam listę . +1 –

+11

-1: Nie masz pojęcia, że ​​łatwiej będzie użyć listy! Pytanie dotyczy tablic. – Adrian

+0

@Adrian: Możliwe, że OP nie zna List <>. Byłoby wspaniale, gdybyśmy sugerowali lepsze alternatywy. Nie ma w tym nic złego. +1 dla tej odpowiedzi. – 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 
    } 

Dlaczego to wyczyścić? Po prostu przypisz nowe wartości.

+0

Widzę wiele powodów, dla których chciałbyś mieć czystą tablicę zero'd, np. debugowanie, ponieważ dane wchodzące do tablicy byłyby dużo łatwiejsze do monitorowania niż nadpisywanie danych. – Adrian

+1

Zmieniam niektóre wartości, a druga musi być "0". Mogę to zrobić w ten sposób, ale szukałem 1 kodu linii. – LIX

4

To nie jest poprawna odpowiedź na posta, ale można użyć tej logiki w zależności od potrzeb. Oto fragmenty kodu pochodzą z 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(); 
    } 
} 

i wyjście to:

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

Statyczna metoda Array.Clear() „ustawia szereg elementów w tablicy do zera, false, lub Nic, w zależności od typu elementu ". Jeśli chcesz wyczyścić całą tablicę, można użyć tej metody dostarczyć 0 jako indeks startu i myArray.Length jak długość:

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

Ta metoda nie usuwa literalnie, ale po prostu ustaw 0/false/null dla każdego elementu w tablicy. –

+0

@ 1_bug Co jeszcze może oznaczać "oczyszczenie"? – Nyerguds

1

Dlaczego nie wystarczy utworzyć nową tablicę i przypisać go do istniejącej zmiennej tablicy?

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

Ponieważ oznacza to, że śmieciarz wykonuje dodatkową pracę, czyszcząc wszystko, co pozostawiasz w pamięci. – Nyerguds

0

Na dwóch tablicach wymiarowych, należy to zrobić jak poniżej:

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