Свойство Capacity
Свойство Capacity класса StringBuilder
возвращает или задаёт размер внутреннего
буфера - сколько символов можно хранить
без перераспределения памяти. Это запас,
а не длина текста: свойство Length
отражает только текущее содержимое. При
записи Capacity значение не должно
быть меньше Length.
Синтаксис
int cap = sb.Capacity;
sb.Capacity = newCapacity;
Пример
Давайте создадим буфер с заданным запасом и проверим, что он не меньше длины текста:
using System;
using System.Text;
class Program
{
static void Main()
{
StringBuilder sb = new StringBuilder(32);
sb.Append("abcde");
Console.WriteLine(sb.Capacity >= sb.Length);
}
}
Результат выполнения кода:
True
Пример
Давайте увеличим запас через EnsureCapacity
и проверим условие для числа 64:
using System;
using System.Text;
class Program
{
static void Main()
{
StringBuilder sb = new StringBuilder("abcde");
sb.EnsureCapacity(64);
Console.WriteLine(sb.Capacity >= 64);
}
}
Результат выполнения кода:
True
Пример
Давайте очистим текст и убедимся, что запас буфера может сохраниться:
using System;
using System.Text;
class Program
{
static void Main()
{
StringBuilder sb = new StringBuilder("abcde");
int capBefore = sb.Capacity;
sb.Clear();
Console.WriteLine(sb.Length);
Console.WriteLine(sb.Capacity >= capBefore);
}
}
Результат выполнения кода:
0
True
Пример
Давайте зададим Capacity явно,
когда планируем длинный текст:
using System;
using System.Text;
class Program
{
static void Main()
{
StringBuilder sb = new StringBuilder();
sb.Capacity = 128;
sb.Append("12345");
Console.WriteLine(sb.Capacity >= 128);
Console.WriteLine(sb.ToString());
}
}
Результат выполнения кода:
True
"12345"
Смотрите также
-
свойство
Length,
которое задаёт длину текста в буфере -
метод
EnsureCapacity,
который заранее расширяет буфер -
метод
Clear,
который обнуляет длину, не сжимая запас -
метод
Append,
который дописывает данные в конец буфера