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#?
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#?
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();
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.
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
Zmieniam niektóre wartości, a druga musi być "0". Mogę to zrobić w ten sposób, ale szukałem 1 kodu linii. – LIX
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
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);
Ta metoda nie usuwa literalnie, ale po prostu ustaw 0/false/null dla każdego elementu w tablicy. –
@ 1_bug Co jeszcze może oznaczać "oczyszczenie"? – Nyerguds
Dlaczego nie wystarczy utworzyć nową tablicę i przypisać go do istniejącej zmiennej tablicy?
x = new int[x.length];
Ponieważ oznacza to, że śmieciarz wykonuje dodatkową pracę, czyszcząc wszystko, co pozostawiasz w pamięci. – Nyerguds
Na dwóch tablicach wymiarowych, należy to zrobić jak poniżej:
Array.Clear(myArray, 0, myArray.GetLength(0)*myArray.GetLength(1));
Jak można mieć zmienną globalną w C#? –
@rep_movsd to kolejne pytanie;) lol –
Czy liczba elementów zmienia się w każdej iteracji pętli? Byłoby dobrze zobaczyć jakiś kod. –