0

私は最近、次の質問を受けました: String と StringBuilders の違いは何ですか?

StringBuilders がimmutableであることをどこかで読んだことは知っていましたが、不変とは何か、StringBuilder の操作がどのようにして String よりも高速になるのか、私は知りませんでした。

誰でもこれを理解するのを手伝ってくれますか?

4

2 に答える 2

6

いいえ、String不変です-一方、StringBuilder可変です。それが要点です。これを使用して、通常は多くの追加操作から文字列を作成します。毎回すべてのデータの新しいコピーを作成せずにこれを行うことができますString

// Bad
string x = "";
for (int i = 0; i < 100; i++)
{
    x += i;
}

// Good
StringBuilder builder = new StringBuilder();
for (int i = 0; i < 100; i++)
{
    builder.Append(i);
}
string x = builder.ToString();

詳細については、文字列連結に関する私の記事と、一般的な文字列に関する他の記事を参照してください。

一般に、不変データ型は作成後にオブジェクト内のデータを変更できないものですが、可変データ型は変更できます ( mutate、したがって名前)。ただし、見た目ほど単純ではありません。詳細については、Eric Lippert の不変性の種類に関するブログ投稿を参照してください。

于 2012-06-20T06:16:30.270 に答える
1

文字列の場合: 文字列に対して操作を実行して変更するたびに、新しいインスタンスが作成されます。

詳細については、以下のリンクを参照してください。

C# の文字列と StringBuilder の違い

于 2012-06-20T06:20:35.670 に答える