C#で容量を指定してStringBuilderを作成する方法
C#では、StringBuilderのコンストラクタに整数値を渡すことで、あらかじめ容量(Capacity)を指定したインスタンスを作成できます。文字列を大量に連結する場合、初期容量を適切に設定しておくと、内部バッファの再割り当てが減り、パフォーマンス向上が期待できます。
基本的な使い方
以下は、容量を指定したStringBuilderを作成するサンプルコードです。
例1
using System;
using System.Text;
public class Demo {
public static void Main(String[] args) {
StringBuilder strBuilder1 = new StringBuilder("Tim");
StringBuilder strBuilder2 = new StringBuilder("Tom");
StringBuilder strBuilder3 = new StringBuilder();
StringBuilder strBuilder4 = new StringBuilder(5);
strBuilder2 = strBuilder3;
Console.WriteLine("Is StringBuilder3 equal to StringBuilder2? = " + strBuilder3.Equals(strBuilder2));
Console.WriteLine("StringBuider1 capacity = " + strBuilder1.Capacity);
Console.WriteLine("StringBuider2 capacity = " + strBuilder2.Capacity);
Console.WriteLine("StringBuider3 capacity = " + strBuilder3.Capacity);
Console.WriteLine("StringBuider4 capacity = " + strBuilder4.Capacity);
}
}出力結果
このプログラムを実行すると、次のような出力が得られます。
Is StringBuilder3 equal to StringBuilder2? = True StringBuider1 capacity = 16 StringBuider2 capacity = 16 StringBuider3 capacity = 16 StringBuider4 capacity = 5
解説
- 引数なしで生成した
strBuilder3や、文字列を指定して生成したstrBuilder1・strBuilder2の容量は、既定値である16になっています。 - 一方、コンストラクタに5を指定した
strBuilder4の容量は、そのまま5に設定されます。 Equals()メソッドによる比較では、同じインスタンスを参照しているためTrueが返されています。
別の例
続いて、もう少しシンプルな例を見てみましょう。
using System;
using System.Text;
public class Demo {
public static void Main(String[] args) {
StringBuilder strBuilder = new StringBuilder();
Console.WriteLine("StringBuider capacity = " + strBuilder.Capacity);
StringBuilder strBuilder2 = new StringBuilder(20);
Console.WriteLine("StringBuider2 capacity = " + strBuilder2.Capacity);
}
}出力結果
StringBuider capacity = 16 StringBuider2 capacity = 20
まとめ
new StringBuilder(容量)のように整数を渡すことで、任意の初期容量を持つStringBuilderを作成できます。容量を指定しない場合は既定値の16が使われます。追加する文字列のサイズが事前にわかっている場合は、初期容量を明示的に指定することで、不要なメモリ再割り当てを避けられます。
-
C#でStringBuilderをクリアする方法(Clearメソッドの使い方)
C#でStringBuilderの中身をクリア(空に)したい場合は、Clear()メソッドを使います。このメソッドを呼び出すと、文字列の内容がすべて削除され、長さは0になります。StringBuilderの準備まず、次のようなStringBuilderを用意します。string[] myStr = { One, Two, Three, Four }; StringBuilder str = new StringBuilder(We will print now...).AppendLine();Clear()メソッドでクリアするStringBuilderをクリアするには、以下のようにClear
-
C#のStringBuilderで文字列を追加する方法(Appendメソッドの使い方)
C#のStringBuilder.Append()メソッドとは C#では、StringBuilderクラスのAppend()メソッドを使用することで、既存の文字列の末尾に新しいコンテンツ(文字列や数値など)を追加できます。文字列を繰り返し連結する場合、string型の「+」演算子による連結よりもパフォーマンスに優れているため、大量の文字列操作が必要な場面で特に有効です。 StringBuilderインスタンスの作成 まず、StringBuilderオブジェクトを作成します。 StringBuilder str = new StringBuilder(); Append()メソッドで文字列を