CSh*_*per -2 c# string reference
我遇到过以下代码谜语:
string a = "S1"; string b = "S2"; a = a+b;
在此之后会留在内存中的是什么:
你有什么意见?为什么,在我看来(c)
"S1S2"
"S2"
"S1"
pointer/reference
Mar*_*zek 5
我认为c是正确的答案,但其原因与你的不符.
您必须了解实习池:
公共语言运行库自动维护一个名为intern pool的表,该表包含程序中声明的每个唯一文字字符串常量的单个实例,以及通过调用Intern 方法以编程方式添加的任何唯一String实例. String.IsInterned 方法
公共语言运行库自动维护一个名为intern pool的表,该表包含程序中声明的每个唯一文字字符串常量的单个实例,以及通过调用Intern 方法以编程方式添加的任何唯一String实例.
Intern
String.IsInterned 方法
String.IsInterned
这就是为什么这两个S1和S2将是即使他们没有提到实习生池内.
S1
S2
为什么S1S2在记忆中会非常明显 - a指出这一点string.
S1S2
a
string
归档时间:
11 年,11 月 前
查看次数:
87 次
最近记录:
11 年,10 月 前