例如,编译器是否知道要翻译
string s = "test " + "this " + "function";
至
string s = "test this function";
从而避免使用字符串连接对性能造成影响?
是。这由C#规范保证。在C#3.0规范的7.18节中:
只要表达式满足上面列出的要求,就会在编译时对表达式求值。即使表达式是包含非恒定构造的较大表达式的子表达式,也是如此。
(“上面列出的要求”包括应用于两个常量表达式的+运算符。)
另请参阅此问题。