Пример: класс 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 с заданной начальной вместимостью по части строки |