C# foreach içindeki objeyi neden değiştiremiyoruz?

Başlatan mir_as82, 25 Eylül 2018, 13:54:25

mir_as82

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ı?

tunayk

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.