Ist es in C # möglich, so etwas wie das Folgende zu erhalten?
%Vor%so dass var-Variable als Referenz behandelt wurde und das Zuweisen zu var würde ein Array-Element ändern?
Es gibt kein solches Konstrukt für die Aktualisierung einer Schleife. Ein Iterator ist schreibgeschützt. Zum Beispiel bietet das Folgende einen perfekt gültigen Iterator:
%Vor%Wie würde es aktualisiert? Was würde es aktualisieren?
Wenn die Daten ein Array / eine Liste / etc sind, dann etwas wie:
%Vor%Oder andere Optionen je nach dem spezifischen Container.
Aktualisierung; Bei einem Push gibt es eine Erweiterungsmethode:
%Vor% Nein. Die foreach
-Anweisung ist einfach Syntax Zucker oben auf der IEnumerable
Schnittstelle. Diese Schnittstelle definiert eine Methode, um en IEnumerator
zu erhalten, die ihrerseits über Methoden verfügt schreibgeschützte Aufzählung machen:
ist Compiler-Verknüpfung für:
%Vor%Da IEnumerator.Current eine Get-Only-Eigenschaft ist, können Sie den Wert nicht festlegen.
%Vor%Wenn Sie einen aktualisierbaren Enumerator unterstützen möchten, müssen Sie ihn selbst erstellen. Sie können jedoch nicht "foreach" verwenden und Sie müssen Wrapper für alle gängigen IEnumerable-Klassen implementieren.
Sie müssen Ihre aktuelle Situation analysieren und herausfinden, wie Sie aktualisieren können. Wenn Sie eine IList-Schnittstelle verwenden, können Sie Folgendes tun:
%Vor%Im Falle einer Zeichenkette, nein; C # Strings sind unveränderlich (kann nicht sein geändert). Wenn du überzählst Objekte eines anderen, veränderlichen Typs, Sie können die Eigenschaften dieser ändern Objekte.
Nur um zu zeigen, worüber Jacob spricht. Betrachten Sie das folgende Code-Snippet:
%Vor%Wenn Sie versuchen, dem "obj" wie oben beschrieben zuzuordnen, erhalten Sie einen Kompilierzeitfehler. Aber nichts hindert Sie daran, die MyInt-Eigenschaften über die Referenz "obj" zu ändern