Verständnis der unveränderlichen Zeichenfolgen von C#und String.Replace
In C#sind Zeichenfolgen unveränderlich. Dies bedeutet, dass sein Wert nicht geändert werden kann, sobald ein String -Objekt erstellt wurde. Die String.Replace
-Methode ändert daher die ursprüngliche Zeichenfolge nicht. Stattdessen gibt es eine neue Zeichenfolge mit den erstellten Ersetzungen zurück.
Dies führt häufig zu Verwirrung. Einfach das Ergebnis von String.Replace
zurück der ursprünglichen Variablen zuweisen , um nichts zu tun, da es ein neues String -Objekt erstellt und seine Referenz auf den ursprünglichen Variablennamen zugewiesen wird.
korrekt mit String.Replace
Um die gewünschte Änderung zu erreichen, müssen Sie die zurückgegebene Zeichenfolge explizit der ursprünglichen Variablen zuweisen:
<code class="language-csharp">someTestString = someTestString.Replace(someID.ToString(), sessionID);</code>
Dies überschreibt die Referenz der ursprünglichen String -Variable unter Bezugnahme auf die neu erstellte, modifizierte Zeichenfolge.
Alternativ können Sie das Ergebnis einer neuen Variablen zuweisen:
<code class="language-csharp">var modifiedString = someTestString.Replace(someID.ToString(), sessionID);</code>
Dies bewahrt die ursprüngliche Zeichenfolge und ermöglicht es Ihnen, separat mit der geänderten Version zu arbeiten.
Dieses Verhalten ist über alle C# String -Manipulationsmethoden konsistent, die neue Zeichenfolgen zurückgeben, anstatt sich zu ändern, einschließlich Remove
, Insert
, Trim
und verschiedenen Substring -Methoden. Denken Sie daran, dass Saiten unveränderlich sind; Jede Operation, die anscheinend eine Zeichenfolge geändert hat, erstellt tatsächlich eine neue.
Das obige ist der detaillierte Inhalt vonWarum ändert `String.Replace` die ursprüngliche Zeichenfolge in C#nicht?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!