Recherche…


Classe System.String

En C # (et .NET), une chaîne est représentée par la classe System.String. Le mot-clé string est un alias pour cette classe.

La classe System.String est immuable, c'est-à-dire qu'une fois créée, son état ne peut pas être modifié.

Donc, toutes les opérations que vous effectuez sur une chaîne comme Substring, Remove, Replace, concatenation using + operator etc. vont créer une nouvelle chaîne et la renvoyer.

Voir le programme suivant pour la démonstration -

string str = "mystring";
string newString = str.Substring(3);
Console.WriteLine(newString);
Console.WriteLine(str);

Cela imprimera des string et des mystring respectivement.

Cordes et immuabilité

Les types immuables sont des types qui, lorsqu'ils sont modifiés, créent une nouvelle version de l'objet en mémoire, plutôt que de modifier l'objet existant en mémoire. L'exemple le plus simple est le type de string intégré.

Prenant le code suivant, qui ajoute "world" sur le mot "Hello"

string myString = "hello";
myString += " world";

Ce qui se passe en mémoire dans ce cas, c'est qu'un nouvel objet est créé lorsque vous ajoutez à la string dans la deuxième ligne. Si vous faites cela dans le cadre d'une grande boucle, cela peut entraîner des problèmes de performances dans votre application.

L'équivalent mutable pour une string est un StringBuilder

Prendre le code suivant

StringBuilder myStringBuilder = new StringBuilder("hello");
myStringBuilder.append(" world");

Lorsque vous exécutez cela, vous modifiez l'objet StringBuilder lui-même en mémoire.



Modified text is an extract of the original Stack Overflow Documentation
Sous licence CC BY-SA 3.0
Non affilié à Stack Overflow