Введение в Что такое StringBuilder в C #
В следующей статье «Что такое StringBuilder в C #» приведена схема StringBuilder в C #. Прежде чем говорить о StringBuilder, давайте сначала рассмотрим концепцию неизменяемости. Если вы знакомы со строками, то, вероятно, вы будете знать, что строки имеют неизменяемую природу, то есть каждый раз, когда создается новый объект и ему предоставляется новое место в памяти и, следовательно, всякий раз, когда данные происходит изменение, измененные данные помещаются в новую ячейку памяти и сохраняют исходную строку в безопасности. Теперь давайте немного подумать. Какой вариант использования этого подхода? Что ж, если вы устанавливаете учетные данные, такие как данные базы данных, другие учетные данные, которые не будут изменены в течение переходного времени, тогда вы можете использовать String для этого, чтобы сохранить их в безопасности. Теперь появляется другой тип объекта, так называемый StringBuilder, то есть изменяемый по своей природе, следовательно, экономит память для вас, позволяя вам изменять данные только в текущей ячейке памяти. Такие вещи пригодятся, когда вы хотите, чтобы на вашем пути было несколько операций добавления.
Определение StringBuilder в C #
StringBuilder - это класс, который представляет собой изменяемый набор символов и является объектом System. Текстовое пространство имен. StringBuilder по своей природе является динамическим объектом, и, следовательно, StringBuilder не создает новый объект в памяти, скорее он динамически расширяет требуемую память для включения измененной или новой строки. Строители строк не выглядят убедительными в многопоточной среде, поскольку они могут привести к несогласованности данных при записи несколькими потоками, если концепция многопоточности не используется должным образом.
Понимание StringBuilder
- Теперь наступает момент, когда нужно понять, к чему может привести изменчивость результатов. Вы должны использовать изменчивость только в том случае, если один и тот же набор данных будет динамически расширяться. Давайте рассмотрим пример, чтобы понять этот сценарий.
- Если вы берете некоторые данные из HTML-формы, которая должна быть сохранена в таблице на основе некоторой бизнес-логики, которая сначала проверит данные, в этом случае вы можете создать объект StringBuilder и добавить все поля данных в сочетании с столбцы базы данных и, наконец, может выполнить запрос вставки, чтобы поместить все это в базу данных, преимущество такого подхода состоит в том, что все время не предполагалось выделять новое место в памяти. И C # будет управлять этим одним местом памяти с динамическим расширением для вас.
- Вы также можете указать номерную емкость StringBuilder в C #.
StringBuilder s = new StringBuilder (10);
StringBuilder s = new StringBuilder («значение объекта», 15) ;. - StringBuilder. Свойство length указывает количество символов, которые в данный момент содержит объект StringBuilder. Если вы добавляете символы в объект StringBuilder, его длина увеличивается до тех пор, пока он не станет равным размеру StringBuilder.
Как StringBuilder в C # облегчает работу?
В C # есть определенные методы, которые упрощают работу с StringBuilder. Класс StringBuilder предоставляет следующие методы, облегчающие задачу разработчика:
- Append (String val) - используется для добавления строкового значения объекта в конец текущего объекта StringBuilder.
Пример -
StringBuilder a = new StringBuilder(“val”, 10);
a.append(“us”) when you do console.writeline(a), it will give you result “value”
- Append (Format) - используется для форматирования входной строки в указанный формат и последующего добавления.
Пример -
StringBuilder a = new StringBuilder(“val”, 10);
a.appendFormat(“(0:C)”, 10)
Пожалуйста, выполните это и проанализируйте отклонение от того, что было сделано в простом методе append ().
- Insert (int index, string value) - вставляет строку по указанному индексу в объект StringBuilder.
пример
StringBuilder a = new StringBuilder(“val”, 10); a.insert(4, ”ue”)
Выполнить и увидеть результат
- Существуют и другие методы, а также множество вариантов вышеупомянутых методов, для которых, пожалуйста, обратитесь к:
Ссылка: https://docs.microsoft.com/en-us/dotnet/api/system.text.stringbuilder?view=netframework-4.8
Что вы можете сделать с StringBuilder?
- StringBuilder имеет много свойств, методов и конструкторов для решения проблем кодирования, как мы видели конструктор StringBuilder (), есть варианты, такие как StringBuilder (String, Int32, Int32, Int32) - это инициализирует новый экземпляр класса StringBuilder из упомянутая подстрока и ее емкость.
- Есть такие свойства, как - длина, емкость, максимальная вместимость.
- Существуют такие методы, как - appendLine (), Equals (object), GetHashCode (), GetType (), Remove (int32, int32), Replace (char, char), toString ().
Все это делает задачу кодирования типичных бизнес-задач легкой и с меньшим количеством строк кода.
Работаете с StringBuilder в C #?
- Реализация объекта StringBuilder путем вызова конструктора StringBuilder (Int32, Int32) может сделать длину и емкость экземпляра StringBuilder выше значения свойства MaxCapacity. Прежде всего это может произойти, когда вы вызываете методы Append (String) и AppendFormat (String, Object) для добавления небольших строк.
- Если количество добавленных символов приводит к тому, что длина объекта StringBuilder превышает его текущую емкость, выделяется новая память, значение свойства Capacity удваивается, новые символы добавляются в объект StringBuilder и настраивается его свойство Length.
- Как только максимальная емкость достигнута, дальнейшее выделение памяти для объекта StringBuilder становится невозможным, и если в любом случае выполняется расширение сверх его максимальной емкости, то, скорее всего, он выбрасывает любую из двух упомянутых ошибок.
- ArgumentOutOfRangeException.
- исключение OutOfMemoryException.
преимущества
- C # не должен заботиться о нескольких местах памяти.
- Динамическое расширение объекта до емкости.
- Это может быть преобразовано в строку и наоборот.
Почему мы должны использовать StringBuilder в C #?
- Видно, что string следует за операциями concat, а StringBuilder следует за операцией добавления, и добавление выглядит быстрее, чем concat, поскольку concat должен выделить новое место в памяти, которое не должно выполняться StringBuilder.
- Если данные временные, то есть непостоянные и будут различаться в зависимости от различных вызовов, можно использовать StringBuilder, если вы работаете без многопоточности, иначе проблема безопасности потоков будет проблемой.
Зачем нам нужен StringBuilder в C #?
Что ж, мы обсуждали это только в приведенных выше пунктах, и здесь можно сделать вывод о случаях использования, когда это может пригодиться.
Вывод
Следовательно, мы увидели разницу между строкой и StringBuilder, когда использовать какие и какие проблемы или исключения могут возникнуть при работе с StringBuilder.
Рекомендуемые статьи
Это было руководство к Что такое StringBuilder в C #? Здесь мы обсудили определение, понимание, работу в StringBuilder в C # с преимуществами и примерами, как использовать? Зачем нам это нужно? и зачем нам его использовать? Вы также можете просмотреть наши другие предлагаемые статьи, чтобы узнать больше-
- StringBuffer против StringBuilder
- C # если заявление
- Цикл C # do-while
- Строковые функции C #