Nun, ohne genau zu verstehen, was Sie unter "Durch Referenz iterieren" verstehen, kann ich nicht spezifisch mit Ja oder Nein antworten, aber ich kann sagen, dass unter der Oberfläche vorgeht, dass das .net-Framework eine "Enumerator" -Klasse für erstellt Jedes Mal, wenn der Client-Code ein foreach für die Lebensdauer des foreach aufruft, das einen Referenzzeiger in der Sammlung enthält, über die iteriert wird, und jedes Mal, wenn Ihr foreach iteriert, "liefert" ir ein Element und "erhöht" den Zeiger oder die Referenz in der Enumerator zum nächsten Punkt ...
Dies geschieht unabhängig davon, ob es sich bei den Elementen in der Sammlung, über die Sie iterieren, um Werttypen oder Referenztypen handelt.