相关疑难解决方法(0)

String.Format与StringBuilder一样高效

假设我在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)

如果是这样,为什么?

编辑

在一些有趣的答案之后,我意识到我可能应该对我的要求更加清楚.我没有那么多要求连接字符串哪个更快,但是一个字符串注入另一个字符串更快.

在上面两种情况下,我想将一个或多个字符串注入预定义模板字符串的中间.

对困惑感到抱歉

c# vb.net performance stringbuilder string.format

157
推荐指数
7
解决办法
6万
查看次数

String.Join vs. StringBuilder:哪个更快?

之前关于格式化double[][]为CSV格式的问题中,Marc Gravell 表示使用StringBuilder将比使用更快String.Join.这是真的?

.net string performance stringbuilder

73
推荐指数
4
解决办法
5万
查看次数

使用前缀,后缀和分隔符连接字符串的最快方法

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)

.net c# string

13
推荐指数
1
解决办法
7647
查看次数

标签 统计

.net ×2

c# ×2

performance ×2

string ×2

stringbuilder ×2

string.format ×1

vb.net ×1