我想知道在C#源代码中打破长字符串的"最佳实践"是什么.这是字符串
"string1"+ "string2"+ "string3"
在编译期间还是在运行时连接?
它是在编译时完成的.这完全等同于"string1string2string3".
假设你有:
string x = "string1string2string3" string y = "string1" + "string2" + "string3"
编译器将执行适当的实习,使得x和y引用相同的对象.
编辑:StringBuilder
答案和评论中有很多话题.许多开发人员似乎都认为应该始终使用字符串连接StringBuilder
.这是一种过度概括 - 值得理解为什么StringBuilder
在某些情况下是好的,而在其他情况下则不然.
如果空格不重要,那么可以使用@ escape字符在代码中编写多行字符串.如果您的代码中有查询,例如:
string query = @"SELECT whatever FROM tableName WHERE column = 1";
这将为您提供包含换行符和制表符的字符串,但对于无关紧要的查询.
您的示例将在编译时连接.所有内联字符串和const字符串变量在编译时连接在一起.
要记住的是,包括任何只读字符串将延迟连接到运行时.string.Empty和Environment.NewLine都是只读字符串变量.