C# String Uner Neutability und String.Replace ()
Eine häufige Verwirrungsquelle für C# -entwickler ist das Verhalten der String.Replace()
-Methode. Viele erwarten, dass es die ursprüngliche Zeichenfolge ändern wird, aber dies nicht der Fall ist. Dies liegt daran, dass Saiten in C# unveränderlich sind.
Nehmen wir an, Sie möchten "C:\Users\Desktop\Project\bin\Debug"
in "C:\Users\Desktop\Project\Resources\People"
durch Ersetzen "\bin\Debug"
durch "\Resources\People"
ändern. Versuche wie:
path.Replace(@"\bin\Debug", @"\Resource\People");
path.Replace("\bin\Debug", "\Resource\People");
verändert die ursprüngliche path
-Sziel nicht. Der Grund? String.Replace()
Gibt eine neue Zeichenfolge mit den erstellten Ersatzteilen zurück; es ändert das Original nicht.
Die Lösung: Neuzuweisung
Um String.Replace()
richtig zu verwenden, müssen Sie die zurückgegebene modifizierte Zeichenfolge einer Variablen zuweisen:
<code class="language-csharp">string path = "C:\Users\Desktop\Project\bin\Debug"; string newPath = path.Replace("\bin\Debug", "\Resources\People"); // newPath now holds the modified string.</code>
Sie können auch die ursprüngliche Variable überschreiben:
<code class="language-csharp">path = path.Replace("\bin\Debug", "\Resources\People"); // path now holds the modified string.</code>
Unveränderlichkeit
verstehenDieses Verhalten beruht auf der grundlegenden Unveränderlichkeit von Zeichenfolgen in C#. Jede Operation, die eine Zeichenfolge zu ändern scheint, erstellt tatsächlich ein neues String -Objekt. Dies gilt für alle String -Methoden, die sich auf die Speicherverwaltung auswirken. In der C# -Dokumentation heißt es eindeutig dieses Merkmal. Denken Sie daran, wenn Sie mit Saiten arbeiten, um unerwartete Ergebnisse zu vermeiden.
Das obige ist der detaillierte Inhalt vonWarum modifiziert String.Replace meine Zeichenfolge nicht in C#?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!