Úvod do Co je StringBuilder v C #

Následující článek Co je StringBuilder v C # poskytuje přehled StringBuilder v C #. Předtím, než mluvíme o StringBuilder, nejprve uvidíme koncept neměnnosti, pokud jste se seznámili s Strings, pak byste pravděpodobně věděli, že řetězce mají neměnnou povahu, tj. Pokaždé, když je vytvořen nový objekt a je k němu poskytnuto nové umístění paměti, a tedy vždy, když jsou data ke změně dojde, změněná data mají být umístěna do nového umístění paměti a udržují původní řetězec v bezpečí. Pojďme se tedy trochu zamyslet. Jaký je případ použití tohoto přístupu? Pokud nastavujete přihlašovací údaje, jako jsou podrobnosti databáze, další přihlašovací údaje, které se v přechodném čase nezmění, můžete pro jejich zajištění použít řetězec String. Nyní přichází další druh objektu, tzv. StringBuilder, tj. Přirozeně proměnlivý, a proto vám ušetří paměť tím, že umožňuje upravovat data pouze v aktuálním umístění v paměti. Takové věci se hodí, když hledáte, aby vám do cesty přibylo více operací.

Definice StringBuilder v C #

StringBuilder je třída, která představuje proměnnou sadu znaků a je objektem systému. Textový jmenný prostor. StringBuilder je dynamický objekt v přírodě, a proto StringBuilder nevytváří v paměti nový objekt, ale dynamicky rozšiřuje potřebnou paměť o začlenění modifikovaného nebo nového řetězce. Tvůrci řetězce se nezdají být přesvědčiví v prostředí s více vlákny, protože pokud není koncept s více vlákny používán správně, mohou mít za následek nekonzistenci dat při zápisu více vlákny.

Porozumění StringBuilder

  1. Nyní přichází místo, kde je třeba porozumět výsledkům, které může vést k mutabilitě. Měli byste se rozhodnout použít mutabilitu pouze v případě, že se stejná sada dat bude dynamicky rozšiřovat.
  2. Pokud berete některá data z HTML formuláře, který má být uložen do tabulky na základě nějaké obchodní logiky, která data nejprve validuje, můžete v tomto případě vytvořit objekt StringBuilder a připojit všechna datová pole ve spojení s sloupců databáze a konečně může provést dotaz vložení, který umístí vše do databáze, výhodou takového přístupu je, že se nemělo přidělit nové umístění paměti. A C # vám bude řídit toto jedno paměťové místo s dynamickým rozšířením.
  3. V C # můžete také určit kapacitu čísel StringBuilder.
    StringBuilder s = nový StringBuilder (10);
    StringBuilder s = new StringBuilder („hodnota objektu“, 15) ;.
  4. StringBuilder. Vlastnost length označuje počet znaků, které objekt StringBuilder aktuálně obsahuje. Pokud do objektu StringBuilder přidáte znaky, jeho délka se zvětšuje, dokud se nerovná velikosti StringBuilderu.

Jak usnadňuje StringBuilder v C # práci?

V C # jsou k dispozici určité metody, což usnadňuje práci se StringBuilderem. Třída StringBuilder poskytuje následující metody, které usnadňují vývojářský úkol -

  • Append (String val) - používá se k připojení hodnoty řetězce k konci aktuálního objektu StringBuilder.

Příklad -

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

  • Připojit (Format) - slouží k formátování vstupního řetězce do zadaného formátu a poté jej připojit.

Příklad -

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

Laskavě to proveďte a analyzujte odchylku od toho, co bylo provedeno v jednoduché metodě append ().

  • Vložit (index int, hodnota řetězce) - vloží řetězec do zadaného indexu v objektu StringBuilder.

Příklad

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

Spustit a vidět výsledek

  • Existují i ​​jiné metody a mnoho variant výše uvedených metod, pro ty viz:

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

Co můžete dělat s StringBuilder?

  • StringBuilder má mnoho vlastností, metod a konstruktérů, aby se postaral o problémy s kódováním, jako jsme viděli konstruktéra StringBuilder (), existují varianty, jako StringBuilder (String, Int32, Int32, Int32) - to inicializuje novou instanci třídy StringBuilder z uvedený podřetězec a jeho kapacita.
  • Existují vlastnosti jako - délka, kapacita, maximální kapacita.
  • Existují metody jako - appendLine (), Equals (objekt), GetHashCode (), GetType (), Remove (int32, int32), Replace (char, char), toString ().

Všichni dělají úkol pro snadné kódování typických obchodních problémů s menším počtem řádků kódu.

Pracujete se StringBuilderem v C #?

  • Okamžitost objektu StringBuilder voláním konstruktoru StringBuilder (Int32, Int32) může zvýšit délku a kapacitu instance StringBuilder nad hodnotu vlastnosti MaxCapacity. Primárně by se to mohlo stát, když zavoláte metody Append (String) a AppendFormat (String, Object) k připojení malých řetězců.
  • Pokud počet přidaných znaků způsobí, že délka objektu StringBuilder překročí jeho aktuální kapacitu, je přidělena nová paměť, hodnota vlastnosti Capacity je zdvojnásobena, nové objekty jsou přidány do objektu StringBuilder a jeho vlastnost Délka je upravena.
  • Jakmile je dosaženo maximální kapacity, není možné žádné další přidělení paměti pro objekt StringBuilder, a pokud v každém případě dojde k rozšíření nad jeho maximální kapacitu, je pravděpodobné, že vyvolá kteroukoli z uvedených dvou chyb.

- ArgumentOutOfRangeException.
- Výjimka OutOfMemoryException.

Výhody

  1. C # nemůže být postaráno o více míst paměti.
  2. Dynamické rozšíření objektu až do jeho kapacity.
  3. Může být převeden na String a naopak.

Proč bychom měli používat StringBuilder v C #?

  • Je vidět, že řetězec sleduje operace concat a StringBuilder sleduje operaci připojení a připojení se zdá být rychlejší než concat, protože concat musí přidělit nové umístění paměti, které StringBuilder nemá dělat.
  • Pokud jsou data přechodná, tj. Nestálá a budou se lišit mezi různými hovory, lze použít StringBuilder za předpokladu, že pracujete bez multithreadingu, jinak bude problém s bezpečností vláken.

Proč potřebujeme StringBuilder v C #?

No, diskutovali jsme o tom pouze ve výše uvedených bodech a lze zde odvodit případy použití, kdy se to může hodit.

Závěr

Proto jsme viděli rozdíl mezi řetězcem a StringBuilderem, kdy použít co a jaké jsou výzvy nebo výjimky, které se mohou objevit při práci s StringBuildery.

Doporučené články

Toto byl průvodce Co je StringBuilder v C # ?. Zde jsme diskutovali o definici, porozumění, práci v StringBuilder v C # s výhodami a příklady, jak používat? Proč to potřebujeme? a proč bychom to měli používat? Další informace naleznete také v dalších navrhovaných článcích.

  1. StringBuffer vs StringBuilder
  2. C # if Prohlášení
  3. C # do-while loop
  4. C # Řetězcové funkce

Kategorie: