字符串参考谜语

时间:2013-12-24 20:49:25

标签: c# string reference

我遇到过以下代码谜语:

string a = "S1";
string b = "S2";
a = a+b;

在此之后会留在记忆中的是什么:

  1. “S1S2”,“S2”
  2. “S1”,“S1S2”
  3. “S1”,“S2”,“S1S2”
  4. 你有什么看法?为什么,在我看来(c)

    • 字符串指向"S1S2"
    • 字符串b指向"S2"
    • 即使更改了字符串a {/ 1>}后,"S1"也在后台

1 个答案:

答案 0 :(得分:5)

我认为 c 是正确答案,但其原因与您的不符。

您必须了解实习池:

  

公共语言运行库自动维护一个名为的表   实习池,包含每个唯一的单个实例   在程序中声明的文字字符串常量,以及任何唯一的   通过调用Intern以编程方式添加的String实例   方法

     

String.IsInterned Method

这就是为什么S1S2都会在实习池中,即使没有对它们的引用。

为什么S1S2会在记忆中显而易见 - a指向string