Ho una variabile globale int[]
e voglio cancellare i suoi dati e riempirla di nuovo in un ciclo.Come cancellare una matrice
Come è possibile questo in C#?
Ho una variabile globale int[]
e voglio cancellare i suoi dati e riempirla di nuovo in un ciclo.Come cancellare una matrice
Come è possibile questo in C#?
Non sarebbe più semplice utilizzare una lista.
public List<int> something = new List<int>();
E poi:
something.Add(somevalue);
e per azzerare:
something.Clear();
Odio int []. Adoro la lista
-1: Non hai idea che sarebbe più facile usare una lista! La domanda riguarda gli array. – Adrian
@Adrian: È possibile che l'OP non abbia familiarità con Elenco <>. Sarebbe bello poter suggerire alternative migliori. Non c'è niente di sbagliato in questo. +1 per questa risposta. – 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
}
Perché azzerarlo? Assegna solo nuovi valori.
Sono in grado di vedere molti motivi per cui si desidera un array zero -d pulito, ad esempio il debug, vedere che i dati nell'array sarebbero molto più facili da monitorare rispetto alla sovrascrittura dei dati. – Adrian
Io cambio alcuni valori e l'altro deve essere "0". Posso farlo in questo modo ma cercavo 1 codice di linea. – LIX
Questo non è risposta corretta per il tuo post, ma è possibile utilizzare questa logica in base alle proprie necessità. Qui è un codice Frammenti tratti da 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();
}
}
e l'uscita di questo è:
Before: [0]: 1 [1]: 2 [2]: 3 [3]: 4 [4]: 5
After: [0]: 1 [1]: 0 [2]: 0 [3]: 0 [4]: 5
Il Array.Clear()
metodo "statico imposta una serie di elementi della matrice a zero, false, o Nulla, a seconda del tipo di elemento ". Se si desidera cancellare l'intero array, è possibile utilizzare questo metodo di fornire 0
come indice di partenza e myArray.Length
come lunghezza:
Array.Clear(myArray, 0, myArray.Length);
Questo metodo non cancella la matrice letteralmente, ma imposta semplicemente 0/false/null per ogni elemento nella matrice. –
@ 1_bug Che altro potrebbe significare "cancellare"? – Nyerguds
Perché non solo creare nuovi array e assegnarlo alla variabile di matrice esistente?
x = new int[x.length];
Perché ciò significa che il garbage collector ha un lavoro extra che ripulisce tutto ciò che si lascia in memoria. – Nyerguds
Per due array bidimensionali, si dovrebbe fare come muggito:
Array.Clear(myArray, 0, myArray.GetLength(0)*myArray.GetLength(1));
Come si può avere una variabile globale in C#? –
@rep_movsd che è un'altra domanda;) lol –
Il numero di elementi cambia in ogni iterazione del ciclo? Sarebbe bello vedere un po 'di codice. –