<分区>
众所周知,字符串是不可变的
=> 意思是,对象的内容在创建后无法更改
。
所以,面试问题是:
这条语句中创建了多少个对象?
字符串 q = "A"+ "B"+ "C";
我回答了两个
,因为“A”+“B”创建一个对象并与“C”连接创建另一个对象。
但是,她说错了
。有什么想法吗?
当像这种情况一样连接多个字符串时会发生什么情况?
<分区>
众所周知,字符串是不可变的
=> 意思是,对象的内容在创建后无法更改
。
所以,面试问题是:
这条语句中创建了多少个对象?
字符串 q = "A"+ "B"+ "C";
我回答了两个
,因为“A”+“B”创建一个对象并与“C”连接创建另一个对象。
但是,她说错了
。有什么想法吗?
当像这种情况一样连接多个字符串时会发生什么情况?
最佳答案
string q = "A"+ "B"+ "C";
会被编译器转换成:
string q = "ABC";
因为所有的字符串都是常量。所以正确答案是只创建一个对象。
从技术上讲,它被编译为以下 IL:
ldstr "ABC"
请注意,如果字符串不是常量(即您在那里使用了变量),它将被转换为对 String.Concat(string, string, string)
的一次调用。
关于c# - 对于 var q = "A"+ "B"+ "C",字符串连接在 C# 中是如何发生的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20099868/