C#
 Computer >> コンピューター >  >> プログラミング >> C#

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や、文字列を指定して生成したstrBuilder1strBuilder2の容量は、既定値である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が使われます。追加する文字列のサイズが事前にわかっている場合は、初期容量を明示的に指定することで、不要なメモリ再割り当てを避けられます。

  1. 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

  2. C#のStringBuilderで文字列を追加する方法(Appendメソッドの使い方)

    C#のStringBuilder.Append()メソッドとは C#では、StringBuilderクラスのAppend()メソッドを使用することで、既存の文字列の末尾に新しいコンテンツ(文字列や数値など)を追加できます。文字列を繰り返し連結する場合、string型の「+」演算子による連結よりもパフォーマンスに優れているため、大量の文字列操作が必要な場面で特に有効です。 StringBuilderインスタンスの作成 まず、StringBuilderオブジェクトを作成します。 StringBuilder str = new StringBuilder(); Append()メソッドで文字列を