String Concat使用常量 - 性能

nmd*_*mdr 5 c# memory string performance stringbuilder

假设我有以下字符串常量:

const string constString1 = "Const String 1";
const string constString2 = "Const String 2";
const string constString3 = "Const String 3";
const string constString4 = "Const String 4";
Run Code Online (Sandbox Code Playgroud)

现在我可以用两种方式追加字符串:Option1:

string resultString = constString1 + constString2 + constString3 + constString4;
Run Code Online (Sandbox Code Playgroud)

选项2:

string resultString = string.Format("{0}{1}{2}{3}",constString1,constString2,constString3,constString4);
Run Code Online (Sandbox Code Playgroud)

内部string.Format使用StringBuilder.AppendFormat.现在假设我附加了常量字符串,哪个选项(option1或选项2)在性能和/或内存方面更好?

xan*_*tos 11

第一个将由编译器(至少是Microsoft C#编译器)完成(与编译器执行1 + 2的方式相同),第二个必须在运行时完成.显然第一个更快.

作为一个额外的好处,在第一个中,字符串是内化的,在第二个中它不是.

而且String.Format非常慢:-)(请阅读 http://msmvps.com/blogs/jon_skeet/archive/2008/10/06/formatting-strings.aspx).不要"慢到成为一个问题",除非您的所有程序一整天都是格式字符串(数百万个,而不是TENS).然后你可能会更快地Append把它们变成一个StringBuilder.