StringBuilderが確保するバッファの最大容量を指定することも出来ます。 最大容量を指定するには、コンストラクタで指定する必要があります。 特に指定しない場合は初期値Int32.MaxValue(2,147,483,647)が最大容量に指定されます。 インスタンスの最大容量はMaxCapacityプロパティで取得することが出来ます。
文字列を追加しようとしたときやバッファのサイズを変更しようとしたときなど、確保しようとしているバッファの容量が最大容量を超える場合は例外ArgumentOutOfRangeExceptionがスローされます。
StringBuilderのバッファの最大容量を指定する
Imports System
Imports System.Text
Class Sample
Shared Sub Main()
' 容量24のバッファを確保し、最大容量に32を指定してインスタンスを作成
Dim sb As New StringBuilder(24, 32)
Console.WriteLine("MaxCapacity: {0}", sb.MaxCapacity)
Console.WriteLine("(Length={1}, Capacity={2}) <{0}>", sb, sb.Length, sb.Capacity)
' 文字列を追加
sb.Append("The quick brown fox")
Console.WriteLine("(Length={1}, Capacity={2}) <{0}>", sb, sb.Length, sb.Capacity)
' 追加することで最大容量を超える長さの文字列を追加
Try
sb.Append(" jumps over the lazy dog")
Catch ex As ArgumentException
Console.WriteLine("ArgumentException!!")
End Try
Console.WriteLine("(Length={1}, Capacity={2}) <{0}>", sb, sb.Length, sb.Capacity)
End Sub
End Class
実行結果
MaxCapacity: 32 (Length=0, Capacity=24) <> (Length=19, Capacity=24) <The quick brown fox> ArgumentException!! (Length=19, Capacity=19) <The quick brown fox>