试图确定使用字符串是否是更好的做法。用格式代替串联字符串,如果是这样,为什么会这样?此外,他们的优点/缺点是我应该意识到的吗?
此:
string foo = "I" + " am " + " a " + " string.";
或:
string bar = string.Format("{0} am a {1}.", "I", "string");
显然是过于简单化的例子,只是想说清楚。
"最佳实践"应该是使代码可读性和可维护性最高的东西。串联字符串与使用string.Format
和使用StringBuilder
之间的性能差异非常小,因此本质上是无关的。
假设第一个方法在编译时没有优化,因为字符串是不可变的,它将创建许多中间字符串。它将从左到右工作,所以首先会有"我是",然后是"我是一个",最后是"我就是一个字符串",存储在foo中。
String.format不会生成中间字符串。据我所知,它在char[]
中执行所有操作,然后通过成为字符串使其不可变。