Иллюстрированный самоучитель по Visual Basic .NET

Пример: класс String, класс StringBuilder

Другим хорошим примером класса с несколькими конструкторами является класс String. Хотя для конструирования строк предусмотрена сокращенная запись (последовательность символов, заключенная в кавычки), в более сложных случаях лучше перейти на использование конструкторов. Например, один из конструкторов создает строку, состоящую из нескольких копий одного символа. Следующая команда создает строку из 37 пробелов:

Dim str As String = New String((CChar(" "), 37)

В данном случае вместо конструктора можно воспользоваться функцией Space (учтите, что в режиме жесткой проверки типов Option Strict On строка, состоящая из одного символа "пробел", должна преобразовываться в символ специальной функцией).

Обобщенная форма этого конструктора выглядит так:

New (ByVal с as Char, ByVal count As Integer)

При работе с классом String также часто используется конструктор New(ByVal value() As Char, который получает массив символов и преобразует их в строку.

Примечание
Поскольку строковые переменные в VB.NET стали объектными, при вводе "." после имени строковой переменной появляется подсказка IntelliSense со списком членов класса String
.

Пример: класс StringBuilder

Чрезвычайно полезный класс StringBuilder входит в пространство имен System.Text (пространства имен рассматриваются в следующем разделе). Этот класс следует использовать вместо обычного класса String в тех случаях, когда вы собираетесь внести постоянные изменения в строку. Дело в том, что при каждом изменении строки (даже при простом добавлении нового символа) VB.NET приходится создавать новую строку, а эта операция требует времени. При работе с экземпляром класса StringBuilder VB.NET обходится модификацией исходного объекта.

При создании пустого объекта StringBuiIder методом New VB.NET резервирует блок памяти для 16 символов и автоматически наращивает его при включении новых символов. Объект StringBuilder можно рассматривать как "интеллектуальный" массив символов, который увеличивается и уменьшается по мере надобности и поэтому в каком-то смысле напоминает тип String в VB6. Текущий размер объекта StringBuiIder называется вместимостью (capacity). В классе StringBuiIder определены шесть конструкторов, перечисленных в табл. 4.1.

Таблица 4.1. Конструкторы класса StringBuilder.

Конструктор Описание
New() Вызывается без параметров. Создает пустой объект StringBuilder с начальной вместимостью 16 символов
New(ByVal value As String) Создает объект StringBuilder, исходное состояние которого определяется заданной строкой
New (ByVal capacity As Integer) Создает пустой экземпляр, но резервирует место для заданного количества символов с возможностью дальнейшего неограниченного роста по мере необходимости (если вы точно знаете минимальный начальный размер строки, этот вариант эффективнее автоматического увеличения объекта StringBuilder)
New(ByVal capacity As Integer, ByVal maxCapacity As Integer) Создает пустой экземпляр, резервирует место для заданного количества символов, но допускает дальнейший рост только до заданного порога. При попытке превысить заданное максимальное количество символов инициируется исключение (см. главу 7)
New(ByVal value As String, ByVal capacity As Integer) Создает объект StringBuilder с заданным исходным состоянием и начальной вместимостью
New(ByVal value As String, ByVal startlndex As Integer, ByVal length As Integer, ByVal capacity As Integer) Создает объект StringBuilder с заданной начальной вместимостью по части строки
Если Вы заметили ошибку, выделите, пожалуйста, необходимый текст и нажмите CTRL + Enter, чтобы сообщить об этом редактору.