Kokios yra string klasės savybės C#?
sobes.tech AI
Atsakymas iš AI
C# klasė turi šias pagrindines savybes:
-
Nepriklausomumas (Immutability): Po
stringobjekto sukūrimo jo turinys negali būti pakeistas. Bet kokia operacija, kuri atrodo kaip eilutės keitimas (pvz., sujungimas), iš tikrųjų sukuria naująstringobjektą.string s1 = "Hello"; string s2 = s1 + " World"; // Sukuriamas naujas `string` objektas "Hello World" // Objekto s1 turinys vis dar yra "Hello"Tai užtikrina saugumą daugiagijų aplinkose ir palengvina jų naudojimą kaip raktus kolekcijose, pvz.,
Dictionary. -
Nuorodinis tipas (Reference Type): Nors eilutės dažnai elgiasi kaip reikšmės tipai dėl perkrauto operatoriaus ir palyginimo pagal reikšmę,
stringyra nuorodinis tipas.string a = "test"; string b = a; // b nuoroda į tą patį "test" objektą heap'e string c = "test"; // Jei "test" eilutė jau yra string pool'e, c taip pat nuoroda į tą patį objektą -
Operatoriaus
+perkrovimas: Operatorius+yra perkrautas eilutėms sujungti.string firstName = "John"; string lastName = "Doe"; string fullName = firstName + " " + lastName; // Eilutės sujungimasDaugkartinis
+naudojimas gali būti neefektyvus, nes sukuria laikinuosius objektus. Efektyvesniam didelio kiekio eilutės sujungimui rekomenduojama naudotiStringBuilder. -
Eilutės puliavimas (String Interning): .NET vykdymo aplinka turi mechanizmą, vadinamą eilutės puliu, kuris saugo unikalius eilutės literatus, apibrėžtus kode. Kai sukuriamas eilutės literatas, CLR patikrina, ar toks jau yra pule. Jei taip, grąžinama nuoroda į esamą objektą vietoj naujo sukūrimo.
string str1 = "hello"; // "hello" pridedama (arba jau yra) pule string str2 = "hello"; // str2 nuoroda į tą patį objektą pule kaip ir str1 Console.WriteLine(ReferenceEquals(str1, str2)); // Išves TrueTai yra atminties optimizacija.
-
Platus metodų rinkinys:
stringklasė siūlo daug metodų eilutėms manipuliuoti, įskaitant paiešką, pakeitimą, formatavimą, didžiųjų ir mažųjų raidžių konvertavimą ir kt.string original = " Hello, World! "; string trimmed = original.Trim(); // Pašalina tarpelius iš kraštų string upper = original.ToUpper(); // Konvertuoja į didžiąsias raides bool contains = original.Contains("World"); // Patikrina, ar yra podalis -
IEnumerable<char>įgyvendinimas: Eilutė iš esmės yra simbolių kolekcija ir įgyvendinaIEnumerable<char>sąsają, leidžiančią pereiti per simbolius ir naudoti LINQ.string text = "C#"; foreach (char c in text) { Console.WriteLine(c); }