2012-03-11 113 views

回答

2

当您定义string s;时,您只能定义一个引用,它当前根本没有指向任何内容。由于字符串是引用类型,因此编译器不会生成string s = new String(..);。你可能会理解它,string s = null;将是编译结果。

对于值类型,例如int,情况是不同的。例如,当您定义int i;时,它将编译为int i = 0;,其中0是默认值。

0

我想通了我的困惑:在阅读this后,我明白堆栈将持有参考s将在初始化后分配在堆中。

+0

我不知道谁投了票,但你的理解比你在问题中表达的要好得多。但是,它仍然只涵盖了一些字符串之谜。还有另一个重要的事情,使字符串特殊,http://msdn.microsoft.com/en-us/library/system.string.isinterned.aspx – 2012-03-11 11:05:33

相关问题