Introductie van Wat is StringBuilder in C #

Het volgende artikel, Wat is StringBuilder in C #, geeft een overzicht van de StringBuilder in C #. Voordat we het over StringBuilder hebben, laten we eerst het concept van onveranderlijkheid zien, als u bekend bent met de tekenreeksen, zou u waarschijnlijk weten dat tekenreeksen een onveranderlijke aard hebben, dat wil zeggen elke keer dat een nieuw object wordt gemaakt en een nieuwe geheugenlocatie wordt verstrekt en dus wanneer gegevens verandering gebeurt, de gewijzigde gegevens moeten op een nieuwe geheugenlocatie worden geplaatst en de oorspronkelijke string veilig worden bewaard. Laten we nu weinig nadenken. Wat is het nut van deze aanpak? Welnu, als u referenties instelt, zoals databasegegevens, andere referenties die niet zullen worden gewijzigd in de voorbijgaande tijd, dan kunt u String daarvoor gebruiken om ze veilig te houden. Nu komt er een ander soort object, de zogenaamde StringBuilder, dat wil zeggen veranderlijk van aard, dus geheugen voor u bespaart door u toe te staan ​​gegevens alleen in de huidige geheugenlocatie te wijzigen. Zulke dingen komen van pas wanneer u meerdere toevoegbewerkingen in de weg wilt staan.

Definitie van StringBuilder in C #

StringBuilder is een klasse die een veranderlijke reeks tekens vertegenwoordigt en het is een object van System. Tekstnaamruimte. StringBuilder is van nature een dynamisch object en daarom creëert StringBuilder geen nieuw object in het geheugen, maar breidt het dynamisch het vereiste geheugen uit om de gewijzigde of nieuwe string op te nemen. Stringbouwers lijken niet overtuigend in een multithreading-omgeving, omdat ze kunnen leiden tot inconsistentie van gegevens wanneer deze door meerdere threads worden overschreven als het multithreading-concept niet correct wordt gebruikt.

StringBuilder begrijpen

  1. Nu komt het punt waarop men zal begrijpen dat de resultaten van veranderlijkheid kunnen leiden, u moet ervoor kiezen om alleen veranderlijkheid te gebruiken als dezelfde set gegevens dynamisch wordt uitgebreid, laten we een voorbeeld nemen om dit scenario te begrijpen.
  2. Als u gegevens uit een HTML-formulier neemt dat moet worden opgeslagen in een tabel op basis van bedrijfslogica, die eerst gegevens valideert, kunt u in dat geval een StringBuilder-object maken en alle gegevensvelden toevoegen, in samenhang met de kolommen van de database en kunnen ten slotte een invoegquery uitvoeren om dat allemaal in de database te plaatsen, het voordeel van een dergelijke aanpak is dat de hele tijd geen nieuwe geheugenlocatie zou moeten worden toegewezen. En C # beheert die ene geheugenlocatie met dynamische uitbreiding voor u.
  3. U kunt ook de nummercapaciteit van StringBuilder opgeven in C #.
    StringBuilder s = new StringBuilder (10);
    StringBuilder s = new StringBuilder ("objectwaarde", 15) ;.
  4. De StringBuilder. De eigenschap Lengte geeft het aantal tekens aan dat het StringBuilder-object momenteel bevat. Als u tekens toevoegt aan het StringBuilder-object, neemt de lengte toe totdat deze gelijk is aan de grootte van de StringBuilder.

Hoe maakt StringBuilder in C # het werken zo gemakkelijk?

Er zijn bepaalde methoden in C #, wat het werken met StringBuilder gemakkelijk maakt. De klasse StringBuilder biedt de volgende methoden om de taak van de ontwikkelaar gemakkelijk te maken:

  • Toevoegen (Stringval) - wordt gebruikt om een ​​stringwaarde van een object toe te voegen aan het einde van het huidige StringBuilder-object.

Voorbeeld -

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

  • Toevoegen (Opmaak) - wordt gebruikt om de invoertekenreeks in de opgegeven indeling op te maken en deze vervolgens toe te voegen.

Voorbeeld -

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

Voer dit vriendelijk uit en analyseer de variatie van wat is gedaan in de eenvoudige append () -methode.

  • Invoegen (int index, stringwaarde) - voegt de string in op de opgegeven index in het StringBuilder-object.

Voorbeeld

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

Voer het resultaat uit

  • Er zijn ook andere methoden, en veel varianten van de bovengenoemde methoden, raadpleeg hiervoor:

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

Wat kunt u doen met StringBuilder?

  • StringBuilder heeft veel eigenschappen, methoden en constructors om voor coderingsproblemen te zorgen, zoals we zagen StringBuilder () constructor, er zijn varianten zoals StringBuilder (String, Int32, Int32, Int32) - dit initialiseert een nieuwe instantie van de StringBuilder-klasse uit de genoemde substring en zijn capaciteit.
  • Er zijn eigenschappen zoals - lengte, capaciteit, max capaciteit.
  • Er zijn methoden zoals - appendLine (), Equals (object), GetHashCode (), GetType (), Remove (int32, int32), Replace (char, char), toString ().

Deze maken allemaal een taak voor het eenvoudig en met minder aantal coderegels coderen van typische bedrijfsproblemen.

Werken met StringBuilder in C #?

  • Door het StringBuilder-object te instantiëren door de constructor StringBuilder (Int32, Int32) aan te roepen, kunnen de lengte en de capaciteit van de StringBuilder-instantie groter worden dan de waarde van de eigenschap MaxCapacity. Dit kan voornamelijk gebeuren wanneer u de methoden Append (String) en AppendFormat (String, Object) aanroept om kleine tekenreeksen toe te voegen.
  • Als het aantal toegevoegde tekens ervoor zorgt dat de lengte van het StringBuilder-object de huidige capaciteit overschrijdt, wordt nieuw geheugen toegewezen, wordt de waarde van de eigenschap Capacity verdubbeld, worden nieuwe tekens toegevoegd aan het StringBuilder-object en wordt de eigenschap Length aangepast.
  • Zodra de maximale capaciteit is bereikt, is geen verdere geheugentoewijzing meer mogelijk voor het StringBuilder-object en als in elk geval uitbreiding voorbij de maximale capaciteit wordt gedaan, werpt dit waarschijnlijk een van de twee genoemde fouten op.

- ArgumentOutOfRangeException.
- Uitzondering OutOfMemoryException.

voordelen

  1. Geen meerdere geheugenlocaties waar C # voor moet zorgen.
  2. Dynamische objectuitbreiding tot de capaciteit.
  3. Het kan worden geconverteerd naar String en vice versa.

Waarom zouden we StringBuilder in C # gebruiken?

  • Het is te zien dat string de concat-operaties volgt en StringBuilder de append-operatie volgt en append sneller lijkt te zijn dan concat omdat concat een nieuwe geheugenlocatie moet toewijzen die niet door StringBuilder hoeft te worden uitgevoerd.
  • Als de gegevens van voorbijgaande aard zijn, dat wil zeggen niet-permanent en variëren tussen verschillende aanroepen, kan StringBuilder worden gebruikt, op voorwaarde dat u zonder multithreading werkt, anders is thread-safety een probleem.

Waarom hebben we StringBuilder nodig in C #?

Welnu, we hebben dit alleen in de bovenstaande punten besproken en men kan hier de gebruiksgevallen afleiden waar dit handig kan zijn.

Conclusie

Daarom zagen we het verschil tussen string en StringBuilder, wanneer wat en wat de uitdagingen of uitzonderingen zijn die kunnen optreden tijdens het werken met StringBuilders.

Aanbevolen artikelen

Dit is een gids geweest voor Wat is StringBuilder in C # ?. Hier hebben we Definitie, Inzicht, Werken in StringBuilder in C # besproken met voordelen en voorbeelden, Hoe te gebruiken? Waarom hebben we het nodig? en waarom zouden we het gebruiken? U kunt ook door onze andere voorgestelde artikelen gaan voor meer informatie-

  1. StringBuffer versus StringBuilder
  2. C # als Verklaring
  3. C # do-while-lus
  4. C # String Functies