Mehr oder weniger was es sagt, der Compiler wird nicht zulassen, dass Sie die Schleifenvariation in einem foreach ändern (Teile davon).
Verwenden Sie einfach:
%Vor% Und es funktioniert, wenn Thing
eine Klasse ist, denn dann ist Ihre Schleifenvariable eine Referenz, und Sie nehmen nur Änderungen am referenzierten Objekt vor, nicht an der Referenz selbst.
Eine Struktur ist kein Referenztyp, sondern ein Werttyp.
Wenn Sie eine class
anstelle von struct
für Thing
hätten, würde die foreach-Schleife eine Referenzvariable für Sie erstellen, die auf das richtige Element in Ihrer Liste zeigen würde. Da es sich jedoch um einen Werttyp handelt, wird nur eine Kopie von Thing
verwendet, in diesem Fall die Iterationsvariable.
Eine alternative Syntax, die ich zu @ Henks Lösung bevorzuge, ist diese.
%Vor%Wenn Sie eine vernünftige Menge an Arbeit in der Schleife machen, dann ist es für das Auge nicht einfacher, die Indizierung überall zu wiederholen.
P.S. DateTime ist eigentlich ein wirklich schlechtes Beispiel, da es keine Eigenschaften hat, die Sie festlegen können, aber Sie erhalten das Bild.