C# C语言中字符串连接中的内存分配#
让, c的输出是“testtest2” 我想知道内存是如何分配的C# C语言中字符串连接中的内存分配#,c#,memory,memory-management,string-concatenation,C#,Memory,Memory Management,String Concatenation,让, c的输出是“testtest2” 我想知道内存是如何分配的 string a = “Test”; string b = “test 2”; string c = a + b 创建一个名为a的引用,并将其指向内存中的“Test”对象 string a = "Test"; string b = "test 2"; 创建一个名为b的引用,并将其指向内存中的“test2”对象 string a = "Test"; string b = "test 2"; 您正在为a+b(此过程使用方法
string a = “Test”;
string b = “test 2”;
string c = a + b
创建一个名为a
的引用,并将其指向内存中的“Test”
对象
string a = "Test";
string b = "test 2";
创建一个名为b
的引用,并将其指向内存中的“test2”
对象
string a = "Test";
string b = "test 2";
您正在为a+b
(此过程使用方法)分配新的内存地址,因为字符串在.NET中。然后c
引用这个新的内存地址
这里是这个的IL代码
string c = a + b;
使用stloc.0
,它将计算堆栈顶部的值存储到本地内存插槽0中
ldstr
指令用于将字符串加载到内存或计算堆栈中。必须先将值加载到评估堆栈中,然后才能使用该堆栈
ldloc
指令是一条加载本地指令Ldloc
将局部变量的值放置在堆栈上