字符串连接如何在C#中进行,用于var q ="A"+"B"+"C"

now*_*ed. 1 .net c# string immutability visual-studio-2010

它更为人所知strings are immutable=>意思,那the contents of the object cannot be changed after it is created.

所以,面试问题是:

在此声明中创建了多少个对象?

string q = "A" + "B" + "C";

我回答two是因为"A"+"B"创建了一个对象并且与"C"连接创建了另一个对象.

但是,她说its wrong.有什么想法吗?

如果在这种情况下发生多个字符串的连接会发生什么?

Mat*_*son 15

string q = "A" + "B" + "C"; 将由编译器转换为:

string q = "ABC";

因为所有的字符串都是常量.所以正确答案是只创建了一个对象.

从技术上讲,它被编译为以下IL:

ldstr "ABC"
Run Code Online (Sandbox Code Playgroud)

请注意,如果字符串不是常量(即您在那里使用了变量),它将被转换为单个调用 String.Concat(string, string, string)