Въведение в това, което е StringBuilder в C #

Следващата статия „Какво е StringBuilder в C #“ предоставя очертания за StringBuilder в C #. Преди да говорим за StringBuilder, нека първо да видите концепция за неизменност, ако сте запознати със струните, тогава вероятно бихте знаели, че струните имат неизменна природа, т.е. всеки път, когато се създава нов обект и му се предоставя ново място в паметта и следователно, когато данните промяната се случва, променените данни трябва да бъдат поставени на ново място в паметта и запазване на оригиналния низ. Сега, нека да не обръщаме внимание. Какъв е случаят на използване на този подход? Е, ако задавате идентификационни данни като подробности за базата данни, други идентификационни данни, които няма да бъдат променени през преходното време, тогава можете да използвате String за това, за да ги запазите. Сега идва друг вид обект, т. Нар. StringBuilder, т.е. сменяем по природа, поради което спестява памет за вас, като ви позволява да променяте данни само в текущото местоположение на паметта. Подобни неща идват по-удобно, когато търсите да имате множество операции за добавяне, които да дойдат на пътя ви.

Дефиниция на StringBuilder в C #

StringBuilder е клас, който представлява изменяем набор от знаци и е обект на System. Текстово пространство на имената. StringBuilder е динамичен обект в природата и следователно StringBuilder не създава нов обект в паметта, а динамично разширява необходимата памет, за да включи модифицирания или новия низ. Създателите на струни не изглеждат убедителни в многопоточна среда, тъй като могат да доведат до несъответствие на данните, когато са написани от множество нишки, ако концепцията за многопоточно четене не се използва правилно.

Разбиране на StringBuilder

  1. Сега идва моментът, в който човек ще разбере как може да доведе изменяемостта на резултатите, трябва да изберете да използвате мутабилността само ако един и същ набор от данни ще се разширява динамично. Нека вземем пример за разбиране на този сценарий.
  2. Ако вземате някои данни от HTML форма, която трябва да се съхранява в таблица въз основа на някаква бизнес логика, която първо ще валидира данните, в този случай можете да създадете StringBuilder обект и да добавите всички полета с данни във връзка с колони от базата данни и накрая може да изпълни заявка за вмъкване, за да постави всичко това в базата данни, предимството на такъв подход е, че през цялото време не е трябвало да се разпределя ново място в паметта. И C # ще управлява това място в паметта с динамично разширение за вас.
  3. Можете също така да зададете капацитета на номера на StringBuilder в C #.
    StringBuilder s = нов StringBuilder (10);
    StringBuilder s = new StringBuilder („стойност на обекта“, 15) ;.
  4. The 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 ().

  • Вмъкване (int индекс, стойност на низа) - вмъква низа в посочения индекс в 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 #?

  • Instantiation на обекта StringBuilder чрез повикване на конструктора StringBuilder (Int32, Int32) може да направи дължината и капацитета на StringBuilder екземпляра да нарасне над стойността на свойството MaxCapacity. Основно това може да се случи, когато се обадите на методите на добавяне (String) и AppendFormat (String, Object), за да добавите малки низове.
  • Ако броят на добавените символи причини дължината на обекта StringBuilder да надвиши текущия му капацитет, се разпределя нова памет, стойността на свойството Capacity се удвоява, към символа StringBuilder се добавят нови символи и се настройва неговото свойство Length.
  • След като бъде достигнат максималният капацитет, всяко по-нататъшно разпределение на паметта не е възможно за обекта StringBuilder и ако във всеки случай се извърши разширяване извън максималния му капацитет, тогава той вероятно хвърля някоя от двете споменати грешки.

- ArgumentOutOfRangeException.
- Изключение OutOfMemoryException.

Предимства

  1. Няма много места в паметта, за които да се погрижи C #.
  2. Динамично разширение на обекта до капацитета.
  3. Може да се преобразува в String и обратно.

Защо трябва да използваме StringBuilder в C #?

  • Вижда се, че низ следва операциите на concat, а StringBuilder следва операцията за добавяне и добавката изглежда по-бърза от concat, тъй като concat трябва да разпредели ново място в паметта, което не трябва да се прави от StringBuilder.
  • Ако данните са преходни, т.е. непостоянни и ще варират между различните повиквания, тогава StringBuilder може да се използва, при условие че работите без многопоточност, в противен случай безопасността на нишката ще бъде проблем.

Защо имаме нужда от StringBuilder в C #?

Е, обсъдихме това само в горните точки и тук може да се направи извод за случаите на употреба, при които това може да е полезно.

заключение

Следователно видяхме разликата между string и StringBuilder, кога да използваме какво и какви са предизвикателствата или изключенията, които могат да се появят по време на работа със StringBuilders.

Препоръчителни статии

Това е ръководство за това какво е StringBuilder в C # ?. Тук сме обсъдили Определение, Разбиране, Работа в StringBuilder в C # с предимства и примери, Как да използвате? Защо имаме нужда от това? и Защо да го използваме? Можете също да прегледате и другите ни предложени статии, за да научите повече-

  1. StringBuffer срещу StringBuilder
  2. C # ако изявление
  3. C # do-while цикъл
  4. C # струнни функции