文字字符串赋值会像这样调用string构造函数吗
本文关键字:string 构造函数 调用 像这样 字符串 赋值 文字 | 更新日期: 2023-09-27 18:27:52
出于好奇,如果我调用:
string txt = "text";
它会在幕后这样称呼吗?
string txt = new String("text".ToCharArray())?
string txt1 = "text";
从中间池加载字符串"text"
,并将其作为引用存储在txt1
变量中。
例如,如果你有
string txt2 = "text";
string txt3 = "text";
然后是ReferenceEquals(txt2, txt3) == true
,因为两个变量都引用了实习生池中的相同字符串对象。
字符串构造函数创建一个新的非内部字符串对象。
string txt4 = new String("text".ToCharArray());
所以ReferenceEquals(txt1, txt4) == false
。
有一个例外:new String(new char[0])
返回对实习生池中""
字符串对象的引用。
不,不会。此代码将直接转换为IL stloc
命令。它将基本上编译为以下
ldstr "text"
stloc.0
我对此表示怀疑-为什么会是
但是为什么不亲自查找,运行ildasm并查看生成了什么代码