Picproje Elektronik Sitesi

BİLGİSAYAR => Donanım ve Yazılım => Konuyu başlatan: mir_as82 - 25 Eylül 2018, 10:54:25

Başlık: C# foreach içindeki objeyi neden değiştiremiyoruz?
Gönderen: mir_as82 - 25 Eylül 2018, 10:54:25
foreach(var foo in foos)
{
  foo = null; // WRONG, foo is not editable
  foo.name = "John";  // RIGHT, foo properties are editable
}

Bu örnekteki foo nesnesini neden değiştiremiyoruz?
Veya
int[] intArray = { 1,2,3,4,5};
            foreach (var item in intArray)
            {
                item++;
                Console.WriteLine(item);
            }

Sebebini açıl bir şekilde açıklayacak arkadaş var mı?
Başlık: Ynt: C# foreach içindeki objeyi neden değiştiremiyoruz?
Gönderen: tunayk - 25 Eylül 2018, 11:39:41
for each döngüsü nün temeli birbirinin cins olarak aynısı olan küme içinde hareket etmesidir. Özellikle tek tip içinde gezmesi zaten marifeti. Sizi listeden seçip dönüşüm yapma külfetinden kurtarmak için var.
Siz bu kümeden bir eleman düşürür yada cinsini değiştirirseniz, kümenin bütünlüğü bozulmuş olur ve sistemin planladığı index kaymış olur.  Buna izin vermemek için sistem eleman cinsini değiştirmeye izin vermiyor.