Quali sono le caratteristiche della classe string in C#?
sobes.tech AI
Risposta dell'AI
La classe string in C# possiede le seguenti caratteristiche chiave:
-
Immutabilità (Immutability): Dopo aver creato un oggetto
string, il suo contenuto non può essere modificato. Qualsiasi operazione che sembri modificare la stringa (ad esempio, la concatenazione) crea in realtà un nuovo oggettostring.string s1 = "Hello"; string s2 = s1 + " World"; // Viene creato un nuovo oggetto `string` per "Hello World" // L'oggetto s1 contiene ancora "Hello"Questo rende le stringhe sicure per l'uso in ambienti multithread e ne semplifica l'uso come chiavi in collezioni come
Dictionary. -
Tipo di riferimento (Reference Type): Sebbene le stringhe si comportino spesso come tipi di valore grazie alla sovraccarico degli operatori e al confronto per valore,
stringè un tipo di riferimento.string a = "test"; string b = a; // b fa riferimento allo stesso oggetto "test" nell'heap string c = "test"; // Se la stringa "test" è già nel pool di stringhe, anche c farà riferimento ad essa -
Sovraccarico dell'operatore
+: L'operatore+è sovraccaricato per la concatenazione di stringhe.string firstName = "John"; string lastName = "Doe"; string fullName = firstName + " " + lastName; // Concatenazione di stringheLa concatenazione multipla usando
+può essere inefficiente a causa della creazione di oggetti temporanei. Per una concatenazione più efficiente di molte stringhe, si consiglia di usareStringBuilder. -
Pool di stringhe (String Interning): Il runtime .NET ha un meccanismo chiamato pool di stringhe che memorizza i literal di stringa unici definiti nel codice. Quando viene creato un literal di stringa, CLR verifica se esiste già nel pool. Se sì, restituisce un riferimento all'oggetto esistente invece di crearne uno nuovo.
string str1 = "hello"; // "hello" viene aggiunto (o già presente) nel pool string str2 = "hello"; // str2 fa riferimento allo stesso oggetto nel pool di str1 Console.WriteLine(ReferenceEquals(str1, str2)); // Mostrerà TrueQuesta è un'ottimizzazione della memoria.
-
Ampio set di metodi: La classe
stringfornisce un ampio set di metodi per manipolare le stringhe, inclusi ricerca, sostituzione, formattazione, conversione in maiuscolo/minuscolo e molto altro.string original = " Hello, World! "; string trimmed = original.Trim(); // Rimuove gli spazi ai bordi string upper = original.ToUpper(); // Converte in maiuscolo bool contains = original.Contains("World"); // Verifica la presenza di una sottostringa -
Implementazione di
IEnumerable<char>: La stringa è essenzialmente una collezione di caratteri e implementa l'interfacciaIEnumerable<char>, che permette di iterare sui caratteri della stringa e di usare LINQ.string text = "C#"; foreach (char c in text) { Console.WriteLine(c); }