Rumah >pembangunan bahagian belakang >C++ >Mengapa String.Replace tidak mengubah suai rentetan saya di C#?

Mengapa String.Replace tidak mengubah suai rentetan saya di C#?

Patricia Arquette
Patricia Arquetteasal
2025-01-28 19:21:09241semak imbas

Why Doesn't String.Replace Modify My String in 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()

katakan anda mahu menukar

ke "C:\Users\Desktop\Project\bin\Debug" dengan menggantikan "C:\Users\Desktop\Project\Resources\People" dengan "\bin\Debug". Percubaan seperti: "\Resources\People"

  1. path.Replace(@"\bin\Debug", @"\Resource\People");
  2. path.Replace("\bin\Debug", "\Resource\People"); akan gagal mengubah rentetan
  3. asal. Sebabnya?

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!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn