Küresel bir değişken int[]
var ve verilerini temizlemek ve bir döngü içinde tekrar doldurmak istiyorum.Bir dizi nasıl temizlenir
Bu nasıl mümkündür C#?
Küresel bir değişken int[]
var ve verilerini temizlemek ve bir döngü içinde tekrar doldurmak istiyorum.Bir dizi nasıl temizlenir
Bu nasıl mümkündür C#?
Bunun yerine bir liste kullanmak daha kolay olmaz mıydı?
public List<int> something = new List<int>();
Ve sonra:
something.Add(somevalue);
Ve temizlemek için:
something.Clear();
Int [] 'dan nefret ediyorum Listeyi
-1: Bir listeyi kullanmanın daha kolay olacağını hiç bilmiyorsunuz! Soru diziler hakkında. – Adrian
@Adrian: OP'nin <> Listesi'ne aşina olma ihtimali yoktur. Daha iyi alternatifler önermek harika olurdu. Bununla ilgili yanlış bir şey yok. Bu cevap için +1. – 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
}
Neden temizle? Sadece yeni değerler atayın.
Temiz bir sıfir dizisi isteyebilmeniz için birçok neden görebiliyorum, örneğin hata ayıklama, diziye giren verilerin görünmesi, verilerin üzerine yazılmasından çok daha kolay olacaktır. – Adrian
Bazı değerleri değiştiriyorum, diğeri "0" olmalıdır. Bu şekilde yapabilirim ama 1 satır kodu arıyordum. – LIX
Bu yazı için doğru cevap değil ancak ihtiyaca göre bu mantığı kullanabilirsiniz. İşte bir kod Snippet'ler 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();
}
}
alınır ve bu çıktısı:
Before: [0]: 1 [1]: 2 [2]: 3 [3]: 4 [4]: 5
After: [0]: 1 [1]: 0 [2]: 0 [3]: 0 [4]: 5
statik Array.Clear()
yöntemi "için false sıfıra Array elemanların bir dizi setleri, ya Hiçbir şey, eleman tipine bağlı olarak ". Eğer tüm diziyi silmek istiyorsanız, bu yöntemi kullanmak bir uzunluk gibi başlangıç indeksi olarak 0
ve myArray.Length
bunu sağlayabilir:
Array.Clear(myArray, 0, myArray.Length);
Bu yöntem diziyi tam olarak temizlemez, ancak dizideki her öğe için 0/false/null değerini ayarlayın. –
@ 1_bug Başka hangi "takas" mümkün olabilir? – Nyerguds
Neden sadece yeni bir dizi oluşturmak ve dizi değişkeni mevcut atamak? İki boyutlu diziler için
x = new int[x.length];
Bu, çöp toplayıcısının, hafızada geride bıraktığınız her şeyi temizlemek için ekstra çalışma alanı olduğu anlamına gelir. – Nyerguds
, siz feryat yapmalıdır:
Array.Clear(myArray, 0, myArray.GetLength(0)*myArray.GetLength(1));
nasıl C# global değişkene sahip olabilir? –
@rep_movsd başka bir soru;) lol –
Döngünün her yinelemesinde eleman sayısı değişiyor mu? Bazı kodları görmek güzel olurdu. –