Introduktion til Hvad er StringBuilder i C #

Den følgende artikel, Hvad er StringBuilder i C #, giver en oversigt over StringBuilder i C #. Før vi taler om StringBuilder, lad os først se begrebet uforanderlighed, hvis du er bekendt med strengene, ville du sandsynligvis vide, at strenge har uforanderlig karakter, dvs. hver gang et nyt objekt oprettes, og der gives en ny hukommelsesplacering til det og dermed hver gang data ændring sker, de ændrede data skal placeres i en ny hukommelsesplacering og holde den originale streng sikker. Lad os nu tænke lidt. Hvad er brugen af ​​denne fremgangsmåde? Nå, hvis du indstiller legitimationsoplysninger som databasedetaljer, andre legitimationsoplysninger, som ikke vil blive ændret i kortvarig tid, kan du bruge String til det for at holde dem sikre. Nu kommer der en anden slags objekt, såkaldt StringBuilder, dvs. mutbar i naturen, og dermed sparer hukommelse for dig ved at give dig mulighed for kun at ændre data i det aktuelle hukommelsessted. Sådanne ting er praktiske, når du søger at have flere tillægsoperationer, der kommer på din måde.

Definition af StringBuilder i C #

StringBuilder er en klasse, der repræsenterer et mutérbart sæt tegn, og det er et objekt i System. Tekstnavnsområde. StringBuilder er et dynamisk objekt i naturen, og derfor opretter StringBuilder ikke et nyt objekt i hukommelsen, det udvider snarere dynamisk den krævede hukommelse til at inkorporere den ændrede eller nye streng. Strengbuildere synes ikke at være overbevisende i et multithreading-miljø, da de kan resultere i datakonsistens, når de skrives over af flere tråde, hvis multithreading-konceptet ikke bruges korrekt.

Forståelse af StringBuilder

  1. Nu kommer det punkt, hvor man skal forstå de resultater, som mutabiliteten kan føre til, du skal vælge kun at bruge mutabilitet, hvis det samme datasæt udvides dynamisk. Lad os tage et eksempel for at forstå dette scenarie.
  2. Hvis du tager nogle data fra en HTML-form, der skal gemmes i en tabel baseret på en vis forretningslogik, som først validerer data, kan du i så fald oprette et StringBuilder-objekt og tilføje alle datafelter i tilknytning til kolonner i databasen og endelig kan udføre en indsæt forespørgsel for at placere, at alle i databasen, fordel ved en sådan tilgang er, at hele tiden en ny hukommelsesplacering ikke skulle tildeles. Og C # vil styre det ene hukommelsessted med dynamisk udvidelse for dig.
  3. Du kan også angive nummerkapaciteten for StringBuilder i C #.
    StringBuilder s = ny StringBuilder (10);
    StringBuilder s = new StringBuilder (“objektværdi”, 15);
  4. StringBuilder. Længdeegenskap angiver antallet af tegn, som StringBuilder-objektet i øjeblikket indeholder. Hvis du tilføjer tegn til StringBuilder-objektet, øges dens længde, indtil det svarer til størrelsen på StringBuilder.

Hvordan gør StringBuilder i C # arbejde så let?

Der er visse metoder, der findes i C #, hvilket gør det nemt at arbejde med StringBuilder. StringBuilder-klassen indeholder følgende metoder til at gøre udviklerens opgave let -

  • Append (String val) - bruges til at tilføje en strengværdi af et objekt til slutningen af ​​det aktuelle StringBuilder-objekt.

Eksempel -

StringBuilder a = new StringBuilder(“val”, 10);
a.append(“us”) when you do console.writeline(a), it will give you result “value”

  • Append (Format) - bruges til at formatere inputstrengen til det specificerede format og derefter tilføje den.

Eksempel -

StringBuilder a = new StringBuilder(“val”, 10);
a.appendFormat(“(0:C)”, 10)

Udfør dette og analyser variationen fra, hvad der er gjort i den enkle append () -metode.

  • Indsæt (int-indeks, strengværdi) - indsætter strengen ved det specificerede indeks i StringBuilder-objektet.

Eksempel

StringBuilder a = new StringBuilder(“val”, 10); a.insert(4, ”ue”)

Kør og se resultatet

  • Der er også andre metoder, og mange varianter af de ovennævnte metoder, til disse henvises til:

Link: https://docs.microsoft.com/en-us/dotnet/api/system.text.stringbuilder?view=netframework-4.8

Hvad kan du gøre med StringBuilder?

  • StringBuilder har mange egenskaber, metoder og konstruktører til at tage sig af kodningsproblemer, ligesom vi så StringBuilder () konstruktør, der er varianter som StringBuilder (String, Int32, Int32, Int32) - dette vil initialisere en ny instans af StringBuilder klassen fra nævnte substring og dens kapacitet.
  • Der er egenskaber som - længde, kapacitet, maks kapacitet.
  • Der er metoder som - appendLine (), Equals (object), GetHashCode (), GetType (), Remove (int32, int32), Replace (char, char), toString ().

Disse gør alt sammen en opgave til kodning af typiske forretningsproblemer let og med mindre antal kodelinjer.

Arbejder du med StringBuilder i C #?

  • Instantiation af StringBuilder-objektet ved at kalde StringBuilder (Int32, Int32) -konstruktøren kan gøre længden og kapaciteten til StringBuilder-instansen til at vokse ud over egenskaben MaxCapacity. Primært kan dette ske, når du kalder metoderne Append (String) og AppendFormat (String, Object) for at tilføje små strenge.
  • Hvis antallet af tilføjede tegn får længden af ​​StringBuilder-objektet til at overskride dens nuværende kapacitet, tildeles ny hukommelse, værdien af ​​egenskaben Kapacitet fordobles, nye tegn tilføjes StringBuilder-objektet, og dens egenskab Længde justeres.
  • Når den maksimale kapacitet er nået, er enhver yderligere hukommelsesallokering ikke mulig for StringBuilder-objektet, og hvis der under alle omstændigheder er udvidelse ud over dets maksimale kapacitet, kaster det sandsynligvis en af ​​de to nævnte fejl.

- ArgumentOutOfRangeException.
- Undtagelse fra OutOfMemoryException.

Fordele

  1. Ingen flere hukommelsesplaceringer, der skal tages hånd om af C #.
  2. Dynamisk objektudvidelse indtil kapaciteten.
  3. Det kan konverteres til streng og vice versa.

Hvorfor skal vi bruge StringBuilder i C #?

  • Det ses, at streng følger concat-operationerne, og StringBuilder følger append-operationen, og append ser ud til at være hurtigere end concat, da concat er nødt til at tildele en ny hukommelsesplacering, som ikke skal gøres af StringBuilder.
  • Hvis dataene er kortvarige, dvs. ikke-permanente og vil variere mellem forskellige opkald, kan StringBuilder bruges, forudsat at du arbejder uden multitrådning, ellers vil tråd-sikkerhed være et problem.

Hvorfor har vi brug for StringBuilder i C #?

Nå, vi har kun diskuteret dette i ovenstående punkter, og man kan her udlede brugen af ​​tilfælde, hvor dette kan komme godt med.

Konklusion

Derfor så vi forskellen mellem streng og StringBuilder, hvornår man skal bruge hvad og hvad er de udfordringer eller undtagelser, der kan vises, mens man arbejder med StringBuilders.

Anbefalede artikler

Dette har været en guide til Hvad er StringBuilder i C # ?. Her har vi drøftet Definition, Understanding, Working in StringBuilder i C # med fordele og eksempler. Hvordan bruges det? Hvorfor har vi brug for det? og hvorfor skulle vi bruge det? Du kan også gennemgå vores andre foreslåede artikler for at lære mere-

  1. StringBuffer vs StringBuilder
  2. C # hvis erklæring
  3. C # do-while-loop
  4. C # strengfunktioner

Kategori: