Pourquoi ne peut-on pas attribuer un foreach variable d'itération, alors que l'on peut complètement modifier avec un accesseur?

J'étais juste curieux de savoir à ce sujet: le code suivant ne compile pas, parce que nous ne pouvons pas modifier un foreach variable d'itération:

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

Mais, la suite de la compilation et de l'exécution:

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

Pourquoi le premier pas valide, alors que la seconde peut faire la même chose en dessous (j'ai été chercher la bonne expression anglaise pour cela, mais je ne m'en souviens pas. En vertu de la...? ^^ )

  • Je pense que tu veux dire "sous le capot" - mais ce n'est pas vraiment la même chose.
  • Pouvez-vous décrire comment vous 'faire de même dans votre setter? this = value?
  • Yess Sous le capot ^^. Ok, donc l'élément est en fait une référence à l'objet et non l'objet lui-même, je l'ai maintenant
  • vous avez entièrement raison, j'ai oublié que les deux objets avec les mêmes valeurs pour toutes les propriétés ne veux pas dire qu'ils sont égaux
InformationsquelleAutor GianT971 | 2011-10-20