首頁 > 後端開發 > C++ > 為什麼不修改C#方法中的字符串更改原始字符串,如何製作?

為什麼不修改C#方法中的字符串更改原始字符串,如何製作?

DDD
發布: 2025-01-24 07:01:09
原創
577 人瀏覽過

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

了解 C# 字串行為與引用傳遞

C# 字串儘管是引用類型,但在修改方面表現出獨特的行為。 下面的程式碼說明了這一點:修改方法中的字串不會更改原始字串變數。

<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>
登入後複製

發生這種情況是因為,雖然字串是引用類型,但該方法接收字串引用的副本(按值傳遞)。 對此複製的參考所做的更改不會影響原始參考。 此外,C# 中的字串是不可變的;你不能直接改變他們的性格。 相反,為字串變數指派新值會建立一個新的字串物件。

引用修改字串

要修改原始字串,請使用 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>
登入後複製

使用ref,該方法直接接收對原始字串變數的參考。 在方法中指派新值會更新原始變數的參考。 這演示了真正的按引用傳遞行為。 請注意,即使使用 ref,您仍然會建立一個新的字串物件;引用只是被更新為指向這個新物件。

以上是為什麼不修改C#方法中的字符串更改原始字符串,如何製作?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板