String对象是如何实例化的?

时间:2011-08-23 17:14:32

标签: c# string

我需要对以下代码做一些澄清。我知道str.Length将返回字符串中的字符数。

string str = "Sample string";
int length = str.Length;

我的澄清是:由于我们没有创建字符串对象,如何将“Sample string”字符串分配给str变量?

3 个答案:

答案 0 :(得分:4)

字符串文字"Sample string"由编译器创建,并将为您存储在程序集中。当您将其分配给引用时,您将获得对该文字字符串的引用。

有一个ldstr instruction专门将文件字符串从程序集元数据加载到string对象引用中。正是该引用已经检查了Length属性。

答案 1 :(得分:1)

编译器正在为您创建字符串对象。

答案 2 :(得分:0)

当您在内存中说"Sample String"时,会创建一个新的字符串对象,就像调用new String("Sample String");一样。这只是一个提高可读性的宏。