Maison > développement back-end > C++ > Pourquoi la modification d'une chaîne dans une méthode C# ne modifie-t-elle pas la chaîne d'origine et comment puis-je la créer ?

Pourquoi la modification d'une chaîne dans une méthode C# ne modifie-t-elle pas la chaîne d'origine et comment puis-je la créer ?

DDD
Libérer: 2025-01-24 07:01:09
original
577 Les gens l'ont consulté

Why Doesn't Modifying a String in a C# Method Change the Original String, and How Can I Make It?

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>
Copier après la connexion

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>
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal