
- •Вопрос 1 Классы обзор элементов класса.
- •Обзор элементов класса.
- •Вопрос 2 Методы. Синтаксический блок. Ссылочные параметры ref и out
- •Объявление методов
- •Возврат из метода и возврат значения
- •Вопрос 3 Перегрузка методов. Перегрузка методов. Вызов методов с одинаковым именем и разными аргументами
- •Вопрос 4 Переменное число аргументов метода params. Переменное число аргументов метода
- •Вопрос 5 Ссылочные параметры ref и out сравнительный анализ.
- •Вопрос 6 Конструкторы. Виды конструкторов, области применения, синтаксический блок.
- •Вызов конструктора экземпляра
- •Закрытые конструкторы экземпляра
- •Статические конструкторы
- •Конструкторы структур
- •Вопрос 7 Свойства. Область применения. Синтаксический блок.
- •Вопрос 8 Наследование. Предпосылки появления. Типы наследования. Синтаксический блок.
- •Вопрос 9 Виртуальные функции virtual. Вызов базовых версий функций base.
- •Вызов базовых версий функций
- •Вопрос 10 Наследование. Динамическое связывание.
- •Вопрос 11 Абстрактные методы. Особенности применения. Синтаксический блок
- •Абстрактный метод в c#
- •Вопрос 12 Абстрактные классы. Синтаксический блок. Особенности.
- •Вопрос 13 Полиморфизм как концепция ооп.
- •Вопрос 14 Потеря и восстановление информации о типе. Операторы is и as.
- •Вопрос 15 Множественное наследование. Интерфейсы область применения. Синтаксический блок.
- •Вопрос 16 Делегаты. Область применения. Синтаксический блок.
- •Вопрос 17 Групповые делегаты. Область применения. Особенности синтаксиса.
- •Вопрос 18 События. Область применения. Синтаксический блок.
- •Вопрос 19 Исключения. Область применения синтаксический блок.
- •Вопрос 20 Потоки данных и файловый ввод-вывод. Виды файлов.
- •Вопрос 21 Класс fileinfo. Обзор элементов класса.
- •Вопрос 22 Классы StreamReader и StreamWriter. Обзор элементов класса.
- •Вопрос 23 Класс List. Особенности применения. Методы и свойства класса.
- •Вопрос 24 Класс StringBuilder. Особенности применения и методы.
- •Вопрос 25 Бинарный ввод и вывод при помощи класса FileStream.
- •Вопрос 26 Форма как базовый элемент графического интерфейса. Заголовок, первоначальное размещение, свойства BackColor, ForeColor, Font; Cursor; BackGroundImage.
- •Вопрос 27 Форма как базовый элемент графического интерфейса. Рамка для формы. Кнопки изменения размеров формы. Прозрачность.
- •Вопрос 28 Передача фокуса ввода на форме. Свойства TabStop TabIndex.
- •Вопрос 29 Текстовые поля. Элемент управления Label и TextBox. Сравнительный анализ.
- •Вопрос 30 Элемент управления MenuStrip.
- •Вопрос 33
- •Вопрос 35 Элементы управления NumericUpDown и DomainUpDown характеристика и сравнительный анализ.
- •Вопрос 36 Вложенные элементы управления(контейнеры) TabControl и GroupBox. Применение элементов управления GroupBox и Panel
- •Применение элемента управления TabControl
- •Вопрос 37 Стыковка и фиксация элементов управления. Свойства Anchor и Dock.
- •Вопрос 38 Методы формы. Show, ShowDialog, Activate, Hide, Close. Методы Show и ShowDialog
- •Метод Activate
- •Метод Hide
- •Метод Close
- •Вопрос 42 Оповещение пользователя об ошибках ввода ErrorProvider.
Вопрос 24 Класс StringBuilder. Особенности применения и методы.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
StringBuilder hello = new StringBuilder("Привет, меня зовут Александр Ерохин",120);
hello.AppendFormat("Я рад вас приветствовать на моем сайте professorweb.ru");
}
}
}
Когда строка конструируется классом String, выделяется ровно столько памяти, сколько необходимо для хранения данной строки. Однако, в пространстве имен System.Text имеется класс StringBuilder, который поступает лучше и обычно выделяет больше памяти, чем нужно в данный момент. У вас, как разработчика, есть возможность указать, сколько именно памяти должен выделить StringBuilder, но если вы этого не сделаете, то будет выбран объем по умолчанию, который зависит от размера начального текста, инициализирующего экземпляр StringBuilder. Класс StringBuilder имеет два главных свойства:
Length, показывающее длину строки, содержащуюся в объекте в данный момент
Capacity, указывающее максимальную длину строки, которая может поместиться в выделенную для объекта память
Любые модификации строки происходят внутри блока памяти, выделенного экземпляру StringBuilder. Это делает добавление подстрок и замену индивидуальных символов строки очень эффективными. Удаление или вставка подстрок неизбежно остаются менее эффективными, потому что при этих операциях приходится перемещать в памяти части строки. Выделять новую память и, возможно, полностью перемещать ее содержимое приходится только при выполнении ряда действий, которые приводят к превышению выделенной емкости строки. В дополнение к избыточной памяти, выделяемой изначально на основе экспериментов, StringBuilder имеет свойство удваивать свою емкость, когда происходит переполнение, а новое значение емкости не установлено явно.
Т.е. при вызове метода AppendFormat() остаток текста помещается в пустое пространство без необходимости перераспределения памяти. Однако реальная эффективность, которую несет с собой применение StringBuilder, проявляется при выполнении повторных подстановок текста.
В следующей таблице перечислены основные методы класса StringBuilder:
Метод |
Назначение |
Append() |
Добавляет строку к текущей строке |
AppendFormat() |
Добавляет строку, сформированную в соответствии со спецификатором формата |
Insert() |
Вставляет подстроку в строку |
Remove() |
Удаляет символ из текущей строки |
Replace() |
Заменяет все вхождения символа другим символом или вхождения подстроки другой подстрокой |
ToString() |
Возвращает текущую строку в воде объекта System.String (переопределение метода класса System.Object) |
Давайте рассмотрим практический пример использования класса StringBuilder: