Comprendre le comportement des chaînes C# et le passage de références
Les chaînes C#, bien qu'elles soient des types référence, présentent un comportement unique en matière de modification. Le code suivant illustre cela : modifier une chaîne au sein d'une méthode ne change pas la variable chaîne d'origine.
<code class="language-csharp">class Test { public static void Main() { string test = "before modification"; Console.WriteLine(test); ModifyString(test); Console.WriteLine(test); // Still "before modification" } public static void ModifyString(string test) { test = "after modification"; } }</code>
Cela se produit car, bien que les chaînes soient des types référence, la méthode reçoit une copie de la référence de la chaîne (passage par valeur). Les modifications apportées à cette référence copiée n'affectent pas l'original. De plus, les chaînes en C# sont immuables ; vous ne pouvez pas modifier directement leurs personnages. Au lieu de cela, attribuer une nouvelle valeur à une variable chaîne crée un nouvel objet chaîne.
Modification des chaînes par référence
Pour modifier la chaîne d'origine, utilisez le mot-clé ref
:
<code class="language-csharp">class Test { public static void Main() { string test = "before modification"; Console.WriteLine(test); ModifyString(ref test); Console.WriteLine(test); // Now "after modification" } public static void ModifyString(ref string test) { test = "after modification"; } }</code>
En utilisant ref
, la méthode reçoit directement une référence à la variable chaîne d'origine. L'attribution d'une nouvelle valeur dans la méthode met à jour la référence de la variable d'origine. Cela démontre un véritable comportement de passage par référence. Notez que même avec ref
, vous créez toujours un nouvel objet chaîne ; la référence est simplement mise à jour pour pointer vers ce nouvel objet.
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!