Почему мы не можем присвоить переменную итерации foreach, в то время как мы можем полностью изменить ее с помощью аксессора?

Мне просто интересно вот что: следующий код не будет компилироваться, потому что мы не можем изменить переменную итерации foreach:

        foreach (var item in MyObjectList)
        {
            item = Value;
        }

Но следующий будет компилироваться и выполняться:

        foreach (var item in MyObjectList)
        {
            item.Value = Value;
        }

Почему первый код недействителен, в то время как второй может делать то же самое под ним (я искал правильное английское выражение для этого, но не помню его. Under the...? ^^ )

49
задан GianT971 20 October 2011 в 04:11
поделиться