了解 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中文網其他相關文章!