Rumah > pembangunan bahagian belakang > C++ > Mengapa Mengubah String dalam Kaedah C# Tidak Mengubah Rentetan Asal, dan Bagaimana Saya Boleh Membuatnya?

Mengapa Mengubah String dalam Kaedah C# Tidak Mengubah Rentetan Asal, dan Bagaimana Saya Boleh Membuatnya?

DDD
Lepaskan: 2025-01-24 07:01:09
asal
630 orang telah melayarinya

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

Memahami Gelagat Rentetan C# dan Hantaran Rujukan

Rentetan C#, walaupun merupakan jenis rujukan, mempamerkan gelagat unik berkenaan pengubahsuaian. Kod berikut menggambarkan ini: mengubah suai rentetan dalam kaedah tidak mengubah pembolehubah rentetan asal.

<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>
Salin selepas log masuk

Ini berlaku kerana, walaupun rentetan ialah jenis rujukan, kaedah menerima salinan rujukan rentetan (nilai laluan). Perubahan yang dibuat pada rujukan yang disalin ini tidak menjejaskan rujukan asal. Tambahan pula, rentetan dalam C# tidak boleh diubah; anda tidak boleh langsung mengubah watak mereka. Sebaliknya, memberikan nilai baharu kepada pembolehubah rentetan menghasilkan objek rentetan baharu.

Mengubah suai Rentetan dengan Rujukan

Untuk mengubah suai rentetan asal, gunakan kata kunci 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>
Salin selepas log masuk

Menggunakan ref, kaedah terus menerima rujukan kepada pembolehubah rentetan asal. Menetapkan nilai baharu dalam kaedah mengemas kini rujukan pembolehubah asal. Ini menunjukkan tingkah laku lulus demi rujukan yang benar. Ambil perhatian bahawa walaupun dengan ref, anda masih mencipta objek rentetan baharu; rujukan hanya dikemas kini untuk menunjuk ke objek baharu ini.

Atas ialah kandungan terperinci Mengapa Mengubah String dalam Kaedah C# Tidak Mengubah Rentetan Asal, dan Bagaimana Saya Boleh Membuatnya?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan