Aké sú vlastnosti triedy string v C#?
sobes.tech AI
Odpoveď od AI
Trieda string v jazyku C# má nasledujúce kľúčové vlastnosti:
-
Nemennosť (Immutability): Po vytvorení objektu
stringjeho obsah nemôže byť zmenený. Akákoľvek operácia, ktorá vyzerá ako zmena reťazca (napríklad konkatenácia), v skutočnosti vytvára nový objektstring.string s1 = "Hello"; string s2 = s1 + " World"; // Vytvorí sa nový objekt string pre "Hello World" // Objekt s1 stále obsahuje "Hello"To robí reťazce bezpečnými na použitie v viacvláknových prostrediach a uľahčuje ich použitie ako kľúče v kolekciách, ako je
Dictionary. -
Referenčný typ (Reference Type): Napriek tomu, že reťazce sa často správajú ako hodnotové typy vďaka preťaženému operátoru a porovnávaniu podľa hodnoty,
stringje referenčný typ.string a = "test"; string b = a; // b odkazuje na ten istý objekt "test" na halde string c = "test"; // Ak je reťazec "test" už v pooli reťazcov, c naň bude odkazovať -
Preťaženie operátora
+: Operátor+je preťažený na spojovanie reťazcov.string firstName = "John"; string lastName = "Doe"; string fullName = firstName + " " + lastName; // Spojenie reťazcovViacnásobné spojovanie pomocou
+môže byť neefektívne kvôli vytváraniu dočasných objektov. Pre efektívnejšie spojovanie veľkého množstva reťazcov sa odporúča použiťStringBuilder. -
Pool reťazcov (String Interning): Prostredie .NET má mechanizmus nazývaný pool reťazcov, ktorý uchováva unikátne literály reťazcov definované v kóde. Keď sa vytvorí literál reťazca, CLR kontroluje, či taký už neexistuje v poole. Ak áno, vráti odkaz na existujúci objekt namiesto vytvárania nového.
string str1 = "hello"; // "hello" sa pridáva (alebo už existuje) do poolu string str2 = "hello"; // str2 odkazuje na ten istý objekt v poole ako str1 Console.WriteLine(ReferenceEquals(str1, str2)); // Vypíše TrueToto je optimalizácia pamäte.
-
Rozsiahly súbor metód: Trieda
stringposkytuje bohatý súbor metód na manipuláciu s reťazcami, vrátane vyhľadávania, nahradzovania, formátovania, prevodu na veľké/malé písmená a mnoho ďalších.string original = " Hello, World! "; string trimmed = original.Trim(); // Odstránenie medzier na okrajoch string upper = original.ToUpper(); // Prevod na veľké písmená bool contains = original.Contains("World"); // Kontrola prítomnosti podreťazca -
Implementácia
IEnumerable<char>: Reťazec je v podstate kolekcia znakov a implementuje rozhranieIEnumerable<char>, čo umožňuje prechádzanie znakov v reťazci a používanie LINQ.string text = "C#"; foreach (char c in text) { Console.WriteLine(c); }