Care sunt caracteristicile clasei string în C#?
sobes.tech AI
Răspuns de la AI
Clasa string în C# are următoarele caracteristici principale:
-
Imutabilitate (Immutability): După crearea unui obiect
string, conținutul său nu poate fi modificat. Orice operație care pare să modifice șirul (de exemplu, concatenarea) creează de fapt un nou obiectstring.string s1 = "Hello"; string s2 = s1 + " World"; // Se creează un nou obiect string pentru "Hello World" // Obiectul s1 încă conține "Hello"Acest lucru face ca șirurile să fie sigure pentru utilizarea în medii multi-thread și simplifică utilizarea lor ca chei în colecții precum
Dictionary. -
Tip referință (Reference Type): Deși șirurile se comportă adesea ca tipuri de valoare datorită supraîncărcării operatorilor și comparației după valoare,
stringeste un tip de referință.string a = "test"; string b = a; // b face referire la același obiect "test" în heap string c = "test"; // Dacă șirul "test" este deja în pool-ul de șiruri, și c va face referire la același obiect -
Supraincarcarea operatorului
+: Operatorul+este supraincarcat pentru concatenarea șirurilor.string firstName = "John"; string lastName = "Doe"; string fullName = firstName + " " + lastName; // Concatenare de șiruriConcatenarea multiplă cu
+poate fi ineficientă din cauza creării de obiecte temporare. Pentru o concatenare mai eficientă a multor șiruri, se recomandă utilizareaStringBuilder. -
Pool-ul de șiruri (String Interning): Mediu de execuție .NET are un mecanism numit pool de șiruri, care stochează literale de șiruri unice definite în cod. Când se creează un literal de șir, CLR verifică dacă deja există în pool. Dacă da, se returnează o referință la obiectul existent în loc să se creeze unul nou.
string str1 = "hello"; // "hello" este adăugat (sau deja există) în pool string str2 = "hello"; // str2 face referire la același obiect în pool ca și str1 Console.WriteLine(ReferenceEquals(str1, str2)); // Va afișa TrueAceasta este o optimizare a memoriei.
-
Set extins de metode: Clasa
stringoferă un set bogat de metode pentru manipularea șirurilor, inclusiv căutare, înlocuire, formatare, conversie la majuscule/minuscule și multe altele.string original = " Hello, World! "; string trimmed = original.Trim(); // Elimină spațiile de la margini string upper = original.ToUpper(); // Convertește în majuscule bool contains = original.Contains("World"); // Verifică dacă conține o subșir -
Implementarea
IEnumerable<char>: Șirul este în esență o colecție de caractere și implementează interfațaIEnumerable<char>, ceea ce permite parcurgerea caracterelor și utilizarea LINQ.string text = "C#"; foreach (char c in text) { Console.WriteLine(c); }