当我们将字符串变量作为ref参数传递给函数并在函数中更改字符串变量的值时

Dny*_*war 2 c# string immutability

static void Main()
{
   String str="sample";
   ChangeString(ref str);
}
void ChangeString(ref string str)
{ 
   str="New Sample";
}
Run Code Online (Sandbox Code Playgroud)

在内存方面,它将创建新实例或更新现有实例,同时我们将ref指针传递给对象

Guf*_*ffa 6

将引用类型作为参数传递不会创建新实例,无论是否使用ref关键字.ChangeString方法内的代码将为变量分配一个新实例.

.NET中的字符串是不可变的,因此您无法更改它们.将字符串分配给字符串变量时,变量中的引用将替换为对新字符串的引用.


但是请注意,这两个字符串对象的文本字符串"sample""New Sample"应用程序启动时创建的.当赋值发生时,代码不会创建任何新的字符串实例,它只获取对先前创建的字符串对象的引用.