Introduksjon til Hva er StringBuilder i C #

Følgende artikkel, Hva er StringBuilder i C #, gir en oversikt for StringBuilder i C #. Før du snakker om StringBuilder, la oss først se begrepet uforanderlighet, hvis du er kjent med strengene, vil du sannsynligvis vite at strengene har uforanderlig karakter, dvs. hver gang et nytt objekt opprettes og det gis en ny minneplassering og dermed når data endring skjer, de endrede dataene skal plasseres på et nytt minneplass og holde den opprinnelige strengen trygg. La oss nå tenke lite om. Hva er bruken av denne tilnærmingen? Vel, hvis du angir legitimasjon som databasedetaljer, andre legitimasjon som ikke vil bli endret i løpet av kortvarig tid, kan du bruke String for det for å holde dem trygge. Nå kommer det en annen type objekt, såkalt StringBuilder, dvs. mutbar i naturen, og sparer dermed minne for deg ved å la deg endre data bare på det nåværende minneplasseringen. Slike ting kommer godt med når du ønsker å ha flere vedleggsoperasjoner for å komme i din vei.

Definisjon av StringBuilder i C #

StringBuilder er en klasse som representerer et mutabelt sett med tegn, og det er et objekt for System. Tekstens navneområde. StringBuilder er et dynamisk objekt i naturen, og derfor oppretter StringBuilder ikke et nytt objekt i minnet, men utvider det dynamisk det nødvendige minnet for å inkorporere den modifiserte eller nye strengen. Strengbyggere virker ikke overbevisende i et multithreading-miljø, da de kan resultere i datakonsekvens når de skrives over av flere tråder hvis multithreading-konseptet ikke brukes riktig.

Forstå StringBuilder

  1. Nå kommer punktet der man skal forstå resultatene mutabilitet kan føre til, du bør velge å bruke mutabilitet bare hvis samme datasett kommer til å utvide dynamisk. La oss ta et eksempel for å forstå dette scenariet.
  2. Hvis du tar noen data fra et HTML-skjema som skal lagres i en tabell basert på noen forretningslogikk, som først vil validere data, kan du i så fall opprette et StringBuilder-objekt og legge til alle datafeltene, i tilknytning til kolonner i databasen og endelig kan utføre et innsettingsspørsmål for å plassere at alle i databasen, fordelen med en slik tilnærming er at hele tiden det ikke var meningen at nytt minneplass skulle tildeles. Og C # vil administrere den ene minneplassen med dynamisk utvidelse for deg.
  3. Du kan også spesifisere antall kapasitet på StringBuilder i C #.
    StringBuilder s = new StringBuilder (10);
    StringBuilder s = new StringBuilder (“objektverdi”, 15);
  4. The StringBuilder. Lengdeegenskap indikerer antall tegn StringBuilder-objektet for øyeblikket inneholder. Hvis du legger til tegn til StringBuilder-objektet, øker lengden til den tilsvarer størrelsen på StringBuilder.

Hvordan gjør StringBuilder i C # arbeid så enkelt?

Det er visse metoder gitt i C #, som gjør det enkelt å jobbe med StringBuilder. StringBuilder-klassen gir følgende metoder for å gjøre utviklerens oppgave enkel -

  • Append (String val) - brukes til å legge en strengverdi av et objekt til slutten av det nåværende StringBuilder-objektet.

Eksempel -

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

  • Append (Format) - brukes til å formatere inndatastrengen til det spesifiserte formatet og deretter legge den til.

Eksempel -

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

Utfør dette og analyser variasjonen fra det som er gjort i den enkle append () -metoden.

  • Sett inn (int-indeks, strengverdi) - setter inn strengen ved den angitte indeksen i StringBuilder-objektet.

Eksempel

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

Kjør og se resultatet

  • Det finnes andre metoder, og mange varianter av de ovennevnte metodene, for disse, se:

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

Hva kan du gjøre med StringBuilder?

  • StringBuilder har mange egenskaper, metoder og konstruktører for å ta seg av kodingsproblemer, som vi så StringBuilder () konstruktør, det er varianter som StringBuilder (String, Int32, Int32, Int32) - dette vil initialisere en ny forekomst av StringBuilder-klassen fra nevnte substring og dens kapasitet.
  • Det er egenskaper som - lengde, kapasitet, maks kapasitet.
  • Det finnes metoder som - appendLine (), Equals (object), GetHashCode (), GetType (), Remove (int32, int32), Erstatt (char, char), toString ().

Disse gjør alle en oppgave for å kode typiske forretningsproblemer enkelt og med mindre antall kodelinjer.

Jobber du med StringBuilder i C #?

  • Instantiering av StringBuilder-objektet ved å kalle StringBuilder (Int32, Int32) -konstruktøren kan gjøre lengden og kapasiteten til StringBuilder-forekomsten til å vokse utover MaxCapacity-eiendomsverdien. Dette kan først og fremst skje når du kaller metodene Append (String) og AppendFormat (String, Object) for å legge til små strenger.
  • Hvis antallet lagt tegn fører til at lengden på StringBuilder-objektet overskrider sin nåværende kapasitet, nytt minne blir tildelt, verdien til egenskapen Kapasitet blir doblet, nye tegn blir lagt til StringBuilder-objektet, og egenskapen Lengde blir justert.
  • Når den maksimale kapasiteten er nådd, er ikke ytterligere minnetildeling mulig for StringBuilder-objektet, og hvis det i noe tilfelle blir utvidelse utover dets maksimale kapasitet, er det sannsynlig at det kaster noen av de to nevnte feilene.

- ArgumentOutOfRangeException.
- Unntak fra OutOfMemoryException.

Fordeler

  1. Ingen flere minneplasser å ta vare på av C #.
  2. Dynamisk objektutvidelse til kapasiteten.
  3. Det kan konverteres til streng og omvendt.

Hvorfor skal vi bruke StringBuilder i C #?

  • Det er sett at streng følger konkat-operasjonene og StringBuilder følger append-operasjonen og append ser ut til å være raskere enn concat, da concat har til å tildele ny minneplassering som ikke trenger å gjøres av StringBuilder.
  • Hvis dataene er forbigående, dvs. ikke-permanente og vil variere mellom forskjellige samtaler, kan StringBuilder brukes, forutsatt at du jobber uten multetråd, ellers vil trådsikkerhet være et problem.

Hvorfor trenger vi StringBuilder i C #?

Vel, vi har kun diskutert dette i de ovennevnte punktene, og man kan her utlede brukssaker der dette kan komme til nytte.

Konklusjon

Derfor så vi forskjellen mellom streng og StringBuilder, når vi skal bruke hva og hva er utfordringene eller unntakene som kan dukke opp mens du arbeider med StringBuilders.

Anbefalte artikler

Dette har vært en guide til Hva er StringBuilder i C # ?. Her har vi diskutert Definisjon, Forståelse, Arbeid i StringBuilder i C # med fordeler og eksempler, Hvordan bruke? Hvorfor trenger vi det? og hvorfor skal vi bruke den? Du kan også gå gjennom andre foreslåtte artikler for å lære mer-

  1. StringBuffer vs StringBuilder
  2. C # hvis uttalelse
  3. C # do-while loop
  4. C # Strengfunksjoner