Introduktion till What is StringBuilder in C #

Följande artikel, Vad är StringBuilder i C # ger en översikt för StringBuilder i C #. Innan vi pratar om StringBuilder, låt oss först se konceptet om oföränderlighet, om du är bekant med strängarna skulle du förmodligen veta att strängar har oföränderlig karaktär, dvs varje gång ett nytt objekt skapas och en ny minnesplats tillhandahålls och därmed när data ändring sker, de ändrade uppgifterna ska placeras i en ny minnesplats och hålla den ursprungliga strängen säker. Låt oss nu tänka lite. Vad är användningen av denna metod? Tja, om du ställer in referenser som databasinformation, andra referenser som inte kommer att ändras under övergående tid, kan du använda String för att hålla dem säkra. Nu kommer det en annan typ av objekt, så kallad StringBuilder, dvs muterbar i naturen, vilket sparar minne för dig genom att du bara kan ändra data på den aktuella minnesplatsen. Sådana saker är praktiska när du vill ha flera append-operationer för att komma på ditt sätt.

Definition av StringBuilder i C #

StringBuilder är en klass som representerar en muterbar uppsättning tecken och är ett objekt för System. Textens namnutrymme. StringBuilder är ett dynamiskt objekt i naturen och därmed skapar StringBuilder inte ett nytt objekt i minnet utan snarare expanderar det erforderliga minnet för att införliva den modifierade eller nya strängen. Strängbyggare verkar inte övertygande i en multithreading-miljö eftersom de kan resultera i datakonsekvens när de skrivs över av flera trådar om multithreading-konceptet inte används korrekt.

Förstå StringBuilder

  1. Nu kommer punkten där man ska förstå resultaten som mutabilitet kan leda till, du bör välja att använda mutabilitet endast om samma uppsättning data kommer att expandera dynamiskt. Låt oss ta ett exempel för att förstå detta scenario.
  2. Om du tar en del data från en HTML-form som ska lagras i en tabell baserad på någon affärslogik, som först validerar data, kan du i så fall skapa ett StringBuilder-objekt och lägga till alla datafält, i samband med kolumner i databasen och äntligen kan köra en infogningsfråga för att placera att allt i databasen, fördelen med en sådan metod är att hela tiden nya minnesplatsen inte skulle tilldelas. Och C # kommer att hantera den ena minnesplatsen med dynamisk expansion för dig.
  3. Du kan också ange antal kapacitet för StringBuilder i C #.
    StringBuilder s = new StringBuilder (10);
    StringBuilder s = new StringBuilder ("objektvärde", 15);
  4. StringBuilder. Längdegenskap anger antalet tecken som StringBuilder-objektet för närvarande innehåller. Om du lägger till tecken i StringBuilder-objektet ökar dess längd tills det är lika med StringBuilder-storleken.

Hur gör StringBuilder i C # arbetet så enkelt?

Det finns vissa metoder i C #, vilket gör det enkelt att arbeta med StringBuilder. StringBuilder-klassen erbjuder följande metoder för att göra utvecklarens uppgift lätt -

  • Append (String val) - används för att lägga till ett strängvärde för ett objekt i slutet av det aktuella StringBuilder-objektet.

Exempel -

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

  • Append (Format) - används för att formatera inmatningssträngen till det angivna formatet och sedan lägga till den.

Exempel -

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

Utför detta och analysera variationen från vad som har gjorts i metoden enkel append ().

  • Insert (int index, string value) - infogar strängen i det angivna indexet i StringBuilder-objektet.

Exempel

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

Kör och se resultatet

  • Det finns andra metoder, och många varianter av ovan nämnda metoder, för dem se:

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

Vad kan du göra med StringBuilder?

  • StringBuilder har många egenskaper, metoder och konstruktörer för att ta hand om kodproblem, som vi såg StringBuilder () konstruktör, det finns varianter som StringBuilder (String, Int32, Int32, Int32) - detta kommer att initialisera en ny instans av StringBuilder-klassen från nämnda substring och dess kapacitet.
  • Det finns egenskaper som - längd, kapacitet, max kapacitet.
  • Det finns metoder som - appendLine (), Equals (object), GetHashCode (), GetType (), Ta bort (int32, int32), Ersätt (char, char), toString ().

Dessa gör alla en uppgift att enkelt koda typiska affärsproblem och med mindre antal kodrader.

Arbetar du med StringBuilder i C #?

  • Instantiering av StringBuilder-objektet genom att anropa StringBuilder (Int32, Int32) -konstruktören kan göra längden och kapaciteten för StringBuilder-instansen att växa utöver MaxCapacity-egendomsvärdet. Detta kan i första hand hända när du kallar metoderna Append (String) och AppendFormat (String, Object) för att lägga till små strängar.
  • Om antalet tillagda tecken får längden på StringBuilder-objektet att överskrida dess nuvarande kapacitet, tilldelas nytt minne, värdet på egenskapen Kapacitet fördubblas, nya tecken läggs till StringBuilder-objektet och dess Längdegenskap justeras.
  • När den maximala kapaciteten har uppnåtts är ingen ytterligare minnesallokering inte möjlig för StringBuilder-objektet, och om i vilket fall utbyggnad utöver dess maximala kapacitet görs, kastar det troligtvis något av de två nämnda felen.

- ArgumentOutOfRangeException.
- Undantag från OutOfMemoryException.

fördelar

  1. Inga flera minnesplatser att ta hand om av C #.
  2. Dynamisk objektutvidgning tills kapaciteten.
  3. Det kan konverteras till String och vice versa.

Varför ska vi använda StringBuilder i C #?

  • Det ses att strängen följer concat-operationerna och StringBuilder följer append-operationen och append verkar vara snabbare än concat eftersom concat måste tilldela ny minnesplats som inte behöver göras av StringBuilder.
  • Om uppgifterna är övergående, dvs. icke-permanenta och kommer att variera mellan olika samtal, kan StringBuilder användas, förutsatt att du arbetar utan multitrådning, annars är gängsäkerhet ett problem.

Varför behöver vi StringBuilder i C #?

Nåväl, vi har diskuterat detta endast i ovanstående punkter och man kan här dra slutsatsen om användningsfall där detta kan vara praktiskt.

Slutsats

Därför såg vi skillnaden mellan sträng och StringBuilder, när man ska använda vad och vilka är de utmaningar eller undantag som kan uppstå när man arbetar med StringBuilders.

Rekommenderade artiklar

Detta har varit en guide till Vad är StringBuilder i C # ?. Här har vi diskuterat Definition, Understanding, Working in StringBuilder i C # med fördelar och exempel, Hur man använder? Varför behöver vi det? och varför ska vi använda det? Du kan också gå igenom våra andra föreslagna artiklar för att lära dig mer-

  1. StringBuffer vs StringBuilder
  2. C # om uttalande
  3. C # do-while-loop
  4. C # Strängfunktioner

Kategori: