c#字符串不變性和string.replace()
> C#開發人員的混淆來源是String.Replace()
>方法的行為。 許多人希望它會修改原始字符串,但事實並非如此。 這是因為c#中的字符串是不可變的。
>假設您想通過"C:\Users\Desktop\Project\bin\Debug"
替換"C:\Users\Desktop\Project\Resources\People"
>將"\bin\Debug"
>更改為"\Resources\People"
>。 嘗試:
path.Replace(@"\bin\Debug", @"\Resource\People");
path.Replace("\bin\Debug", "\Resource\People");
將無法更改原始path
字符串。 原因? String.Replace()
> 返回一個帶有替換的新字符串;它不會改變原始。
解決方案:重新分配
正確使用String.Replace()
>,您必須將返回的修改後字符串分配給一個變量:
<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>
<code class="language-csharp">path = path.Replace("\bin\Debug", "\Resources\People"); // path now holds the modified string.</code>
理解不變性
這種行為源於c#中字符串的基本不變性。 似乎修改字符串的任何操作實際上都會創建一個新的字符串對象。這適用於所有字符串方法,影響內存管理。 C#文檔清楚地說明了這一特徵。 在使用字符串時,請記住這一點。以上是為什麼String.Replace在C#中修改我的字符串?的詳細內容。更多資訊請關注PHP中文網其他相關文章!