是“;字符串s";编译为“;string s=新字符串(.)&”;

本文关键字:字符串 编译 quot string | 更新日期: 2023-09-27 18:27:19

字符串不是值类型,但我们仍然像使用它的值类型一样使用它。那么,string s;是被编译成类似string s = new String(..);的东西吗?

是“;字符串s";编译为“;string s=新字符串(.)&”;

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

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

我发现了我的困惑:在阅读了这篇文章后,我明白堆栈将保存对s的引用,该引用将在初始化后分配到堆中。