3

StringBuilder の既定の容量が 16 文字なのはなぜですか? これはある種の最適化ですか?

StringBuilder builder = new StringBuilder();
Console.WriteLine("builder capacity: '{0}'", builder.Capacity);

出力:

builder capacity: '16'
4

1 に答える 1

5

StringBuilderのインスタンスが初期化されるときに容量または最大容量が指定されていない場合は、実装固有のデフォルト値が使用されます。

MSDNドキュメントから直接。

完全に使用法に依存するため、実際には何も最適化できません。したがって、コンストラクターで容量を指定できるため、自分で最適化できます。何も指定しなくても、ある程度の容量が必要であるというかなり安全な推測に基づいて、何も指定しない場合は、何かを入力します。

同じことがリストにも当てはまります。彼らはあなたが欲しいアイテムの数やリストがあなたのアプリに平均していくつのアイテムを含んでいるかを知りません。それらは容量を公開するので、リストのサイズを強制して、リストが頻繁に大きくなるのを防ぐことができます。このStringBuilder場合も違いはありません。

于 2011-12-15T14:10:22.017 に答える