Rumah >pembangunan bahagian belakang >C++ >Mengapa String.Replace tidak mengubah suai rentetan saya di C#?
c# String Immutability and string.replace ()
Sumber kekeliruan yang sama untuk pemaju C# adalah tingkah laku kaedah. Ramai yang mengharapkan ia mengubah suai rentetan asal, tetapi tidak. Ini kerana rentetan dalam C# tidak berubah. String.Replace()
ke "C:\Users\Desktop\Project\bin\Debug"
dengan menggantikan "C:\Users\Desktop\Project\Resources\People"
dengan "\bin\Debug"
. Percubaan seperti: "\Resources\People"
path.Replace(@"\bin\Debug", @"\Resource\People");
path.Replace("\bin\Debug", "\Resource\People");
akan gagal mengubah rentetan mengembalikan path
rentetan baru dengan penggantian yang dibuat; ia tidak mengubah asal. String.Replace()
Penyelesaian: Penegasan semula
untuk menggunakan dengan betul , anda mesti menetapkan rentetan yang diubahsuai yang dikembalikan kepada pembolehubah:
String.Replace()
anda juga boleh menulis ganti pembolehubah asal:
<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>
Memahami Immutability
<code class="language-csharp">path = path.Replace("\bin\Debug", "\Resources\People"); // path now holds the modified string.</code>
Tingkah laku ini berpunca dari kebolehubahan asas rentetan dalam C#. Mana -mana operasi yang nampaknya mengubahsuai rentetan sebenarnya membuat objek rentetan baru. Ini terpakai kepada semua kaedah rentetan, yang memberi kesan kepada pengurusan memori. Dokumentasi C# jelas menyatakan ciri ini. Ingatlah ini ketika bekerja dengan rentetan untuk mengelakkan hasil yang tidak dijangka.
Atas ialah kandungan terperinci Mengapa String.Replace tidak mengubah suai rentetan saya di C#?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!