假设我在C#中有一个stringbuilder来执行此操作:
StringBuilder sb = new StringBuilder();
string cat = "cat";
sb.Append("the ").Append(cat).(" in the hat");
string s = sb.ToString();
Run Code Online (Sandbox Code Playgroud)
那将是有效的或更高效的:
string cat = "cat";
string s = String.Format("The {0} in the hat", cat);
Run Code Online (Sandbox Code Playgroud)
如果是这样,为什么?
编辑
在一些有趣的答案之后,我意识到我可能应该对我的要求更加清楚.我没有那么多要求连接字符串哪个更快,但是将一个字符串注入另一个字符串更快.
在上面两种情况下,我想将一个或多个字符串注入预定义模板字符串的中间.
对困惑感到抱歉
UPDATE
按照奶酪先生的回答,似乎是
public static string Join<T>(string separator, IEnumerable<T> values)
Run Code Online (Sandbox Code Playgroud)
超载string.Join
从使用StringBuilderCache
类中获得优势.
有没有人对本声明的正确性或原因有任何反馈意见?
我可以写自己的,
public static string Join<T>(
string separator,
string prefix,
string suffix,
IEnumerable<T> values)
Run Code Online (Sandbox Code Playgroud)
使用StringBuilderCache
该类的函数?
在提交了我对这个问题的答案后,我得到了一些分析,其中哪个是最佳表现的答案.
我在控制台Program
类中编写了这段代码来测试我的想法.
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Linq;
using System.Text;
class Program
{
static void Main()
{
const string delimiter = ",";
const string prefix = "[";
const string suffix = "]";
const int iterations = 1000000;
var sequence = Enumerable.Range(1, …
Run Code Online (Sandbox Code Playgroud)