尝试确定使用string.Format代替串联字符串是否更好,如果是这样,为什么会这样?另外,他们应该注意哪些优点/缺点?
此:
string foo = "I" + " am " + " a " + " string.";
或:
string bar = string.Format("{0} am a {1}.", "I", "string");
显然过于简单的例子,只是想清楚。
答案 0 :(得分:4)
“最佳实践”应该是使您的代码最具可读性和可维护性的东西。串联字符串与使用string.Format
与使用StringBuilder
之间的性能差异非常小,以至于它基本上无关紧要。
答案 1 :(得分:2)
假设第一个方法在编译时没有优化,因为字符串是不可变的,它将创建许多中间字符串。它将从左到右工作,所以首先是“我是”,然后是“我是一个”,最后是“我是一个字符串”。它存储在foo中。
String.format不会生成中间字符串。根据我的理解,它完成了char[]
中的所有操作,然后通过创建一个String使其成为不可变的。