Maison >développement back-end >C++ >Pourquoi c # string.replace () ne modifie-t-il pas la chaîne d'origine?
Comprendre l'immuabilité de la chaîne C # et la méthode Replace()
La manipulation de la chaîne en C # peut parfois être délicate. Un piège commun implique la méthode Replace()
et l'attente qu'elle modifie la chaîne d'origine. Examinons ce problème.
Considérez cet extrait de code:
<code class="language-csharp">string path = "C:\Users\Desktop\Project\bin\Debug"; path.Replace(@"\bin\Debug", @"\Resource\People"); Console.WriteLine(path); // Output: C:\Users\Desktop\Project\bin\Debug (Unchanged!)</code>
La méthode Replace()
ne modifie pas la chaîne d'origine . Pourquoi? Parce que les cordes en C # sont path
immuables . Cela signifie qu'ils ne peuvent pas être modifiés après la création. La méthode à la place Replace()
renvoie une nouvelle chaîne avec les remplacements faits.
<code class="language-csharp">string path = "C:\Users\Desktop\Project\bin\Debug"; string newPath = path.Replace(@"\bin\Debug", @"\Resource\People"); Console.WriteLine(newPath); // Output: C:\Users\Desktop\Project\Resource\People</code>Alternativement, vous pouvez écraser directement la variable d'origine:
<code class="language-csharp">string path = "C:\Users\Desktop\Project\bin\Debug"; path = path.Replace(@"\bin\Debug", @"\Resource\People"); Console.WriteLine(path); // Output: C:\Users\Desktop\Project\Resource\People</code>Rappelez-vous: les chaînes C # sont immuables. Toute opération qui semble modifier une chaîne crée en fait un nouvel objet de chaîne. Garder cela à l'esprit est crucial pour écrire efficace et corriger le code C #.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!