C#是否优化了字符串文字的连接?
例如,编译器是否知道翻译
string s = "test " + "this " + "function";
至
string s = "test this function";
从而避免字符串连接的性能问题?
是。 这由C#规范保证。 它在7.18节(C#3.0规范)中:
只要表达式符合上述要求,表达式就会在编译时进行评估。 即使表达式是包含非常量结构的较大表达式的子表达式,情况也是如此。
(“上面列出的要求”包括应用于两个常量表达式的+运算符。)
另请参阅此问题。
只是关于相关主题的一个附注 - C#编译器还将使用' +
'运算符'优化'涉及非文字的多个连接,以对String.Concat()方法的多参数重载进行单个调用。
所以
string result = x + y + z;
编译成相当于的东西
string result = String.Concat( x, y, z);
而不是更天真的可能性:
string result = String.Concat( String.Concat( x, y), z);
没有什么惊天动地的,但只是想把这一点加入关于字符串文字串联优化的讨论中。 我不知道这种行为是否由语言标准来规定。
是。
C#不仅优化了字符串文字的连接,还将等价的字符串文字折叠为常量,并使用指针引用对同一常量的所有引用。
链接地址: http://www.djcxy.com/p/60291.html上一篇: Does C# optimize the concatenation of string literals?
下一篇: Error while inserting record whose primary key set by AFTER INSERT trigger