Problème:
Comportement inattendu lors de l'utilisation de la méthode String.Replace()
C # pour modifier une chaîne. Le remplacement ne semble pas prendre effet.
Exemple:
<code class="language-csharp">string filePath = "C:\Users\Desktop\Project\bin\Debug"; filePath.Replace("\bin\Debug", "\Resources\People"); </code>
Résultat:
filePath
reste inchangé après avoir appelé Replace()
.
Explication:
Les cordes en C # sont immuables. Des méthodes comme Replace()
Ne modifiez pas la chaîne d'origine; Ils retournent une nouvelle chaîne avec les modifications. La chaîne d'origine reste intacte.
Solution:
Pour mettre à jour correctement la chaîne, réaffectez le résultat de la méthode Replace()
:
<code class="language-csharp">filePath = filePath.Replace("\bin\Debug", "\Resources\People");</code>
Cela crée une nouvelle chaîne contenant le remplacement et les mises à jour filePath
pour pointer vers cette nouvelle chaîne.
Comprendre l'immutabilité:
N'oubliez pas que les cordes C # sont immuables. Toute opération qui semble modifier une chaîne crée en fait un nouvel objet de chaîne. Ceci est crucial pour la gestion de la mémoire et les considérations de performance.
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!