1. ホーム
  2. c#

[解決済み] C#で文字を繰り返し表示する最適な方法

2022-03-22 23:50:34

質問

の文字列を生成するのに最適な方法は何ですか? \t C#で

私はC#を学習しており、同じことを言うさまざまな方法を実験しています。

Tabs(uint t) を返す関数です。 stringt\t 's

例えば Tabs(3) リターン "\t\t\t"

この3つの実装方法のうち、どれが Tabs(uint numTabs) がベストでしょうか?

もちろん、それは「ベスト」の意味にもよりますが。

  1. LINQ版は2行で済むからいいよね。 しかし、RepeatやAggregateの呼び出しは不必要に時間やリソースを消費していないでしょうか?

  2. その StringBuilder のバージョンは非常にわかりやすいですが、これは StringBuilder クラスはなぜか遅くなる?

  3. string のバージョンは基本的なもので、つまり理解しやすいものです。

  4. 全く問題ないのでしょうか? みんな平等なんですか?

これらはすべて、私がC#をよりよく理解するための質問です。

private string Tabs(uint numTabs)
{
    IEnumerable<string> tabs = Enumerable.Repeat("\t", (int) numTabs);
    return (numTabs > 0) ? tabs.Aggregate((sum, next) => sum + next) : ""; 
}  

private string Tabs(uint numTabs)
{
    StringBuilder sb = new StringBuilder();
    for (uint i = 0; i < numTabs; i++)
        sb.Append("\t");

    return sb.ToString();
}  

private string Tabs(uint numTabs)
{
    string output = "";
    for (uint i = 0; i < numTabs; i++)
    {
        output += '\t';
    }
    return output; 
}

解決方法は?

これについてはどうでしょうか。

string tabs = new string('\t', n);

ここで n は文字列を何回繰り返すかです。

あるいはもっといい。

static string Tabs(int n)
{
    return new string('\t', n);
}