Heim > Backend-Entwicklung > C++ > Warum ändert das Ändern einer Zeichenfolge in einer C#-Methode nicht die ursprüngliche Zeichenfolge, und wie kann ich sie erstellen?

Warum ändert das Ändern einer Zeichenfolge in einer C#-Methode nicht die ursprüngliche Zeichenfolge, und wie kann ich sie erstellen?

DDD
Freigeben: 2025-01-24 07:01:09
Original
630 Leute haben es durchsucht

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

Verstehen des Verhaltens von C#-Strings und der Referenzübergabe

C#-Strings zeigen, obwohl es sich um Referenztypen handelt, ein einzigartiges Verhalten bei Änderungen. Der folgende Code veranschaulicht dies: Durch das Ändern einer Zeichenfolge innerhalb einer Methode wird die ursprüngliche Zeichenfolgenvariable nicht geändert.

<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>
Nach dem Login kopieren

Dies geschieht, weil die Methode, obwohl es sich bei Zeichenfolgen um Referenztypen handelt, eine Kopie der Referenz der Zeichenfolge erhält (Wertübergabe). Änderungen an dieser kopierten Referenz haben keine Auswirkungen auf das Original. Darüber hinaus sind Zeichenfolgen in C# unveränderlich; Sie können ihre Charaktere nicht direkt ändern. Stattdessen wird durch die Zuweisung eines neuen Werts zu einer String-Variablen ein neues String-Objekt erstellt.

Zeichenfolgen durch Referenz ändern

Um die ursprüngliche Zeichenfolge zu ändern, verwenden Sie das Schlüsselwort 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>
Nach dem Login kopieren

Mit ref erhält die Methode direkt einen Verweis auf die ursprüngliche String-Variable. Durch die Zuweisung eines neuen Werts innerhalb der Methode wird die Referenz der ursprünglichen Variablen aktualisiert. Dies demonstriert echtes Pass-by-Reference-Verhalten. Beachten Sie, dass Sie auch mit ref immer noch ein neues String-Objekt erstellen. Die Referenz wird lediglich aktualisiert, um auf dieses neue Objekt zu verweisen.

Das obige ist der detaillierte Inhalt vonWarum ändert das Ändern einer Zeichenfolge in einer C#-Methode nicht die ursprüngliche Zeichenfolge, und wie kann ich sie erstellen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage