Introduction à Qu'est-ce que StringBuilder en C #

L'article suivant, Qu'est-ce que StringBuilder en C #, fournit un aperçu du StringBuilder en C #. Avant de parler de StringBuilder, voyons d'abord le concept d'immuabilité, si vous connaissez les chaînes, vous savez probablement que les chaînes ont une nature immuable, c'est-à-dire chaque fois qu'un nouvel objet est créé et qu'un nouvel emplacement de mémoire lui est fourni et donc chaque fois que des données le changement se produit, les données modifiées doivent être placées dans un nouvel emplacement de mémoire et conserver la chaîne d'origine en sécurité. Maintenant, réfléchissons un peu. Quel est le cas d'utilisation de cette approche? Eh bien, si vous définissez des informations d'identification comme les détails de la base de données, d'autres informations d'identification qui ne seront pas modifiées dans le temps transitoire, vous pouvez utiliser String pour cela afin de les protéger. Maintenant, il existe un autre type d'objet, appelé StringBuilder, c'est-à-dire de nature mutable, économise donc de la mémoire pour vous en vous permettant de modifier les données dans l'emplacement de mémoire actuel uniquement. De telles choses s'avèrent utiles lorsque vous cherchez à avoir plusieurs opérations d'ajout sur votre chemin.

Définition de StringBuilder en C #

StringBuilder est une classe qui représente un ensemble de caractères mutable et c'est un objet de System. Espace de noms de texte. StringBuilder est un objet dynamique dans la nature et par conséquent StringBuilder ne crée pas un nouvel objet dans la mémoire, il étend plutôt dynamiquement la mémoire requise pour incorporer la chaîne modifiée ou nouvelle. Les générateurs de chaînes ne semblent pas convaincants dans un environnement multithreading car ils peuvent entraîner une incohérence des données lorsqu'ils sont écrasés par plusieurs threads si le concept multithreading n'est pas utilisé correctement.

Comprendre StringBuilder

  1. Maintenant, le point vient où l'on doit comprendre les résultats de la mutabilité, vous devez choisir de n'utiliser la mutabilité que si le même ensemble de données va se développer dynamiquement, Prenons un exemple pour comprendre ce scénario.
  2. Si vous prenez des données d'un formulaire HTML qui doivent être stockées dans une table basée sur une logique métier, qui va d'abord valider les données, dans ce cas, vous pouvez créer un objet StringBuilder et ajouter tous les champs de données, en association avec le colonnes de base de données et enfin peut exécuter une requête d'insertion pour placer tout cela dans la base de données, l'avantage d'une telle approche est que tout le temps le nouvel emplacement de mémoire n'était pas censé être alloué. Et C # gérera cet emplacement mémoire avec une expansion dynamique pour vous.
  3. Vous pouvez également spécifier la capacité numérique de StringBuilder en C #.
    StringBuilder s = nouveau StringBuilder (10);
    StringBuilder s = nouveau StringBuilder («valeur d'objet», 15) ;.
  4. Le StringBuilder. La propriété Length indique le nombre de caractères que l'objet StringBuilder contient actuellement. Si vous ajoutez des caractères à l'objet StringBuilder, sa longueur augmente jusqu'à ce qu'elle soit égale à la taille de StringBuilder.

Comment StringBuilder en C # facilite-t-il le travail?

Certaines méthodes sont fournies en C #, ce qui facilite le travail avec StringBuilder. La classe StringBuilder fournit les méthodes suivantes pour faciliter la tâche du développeur -

  • Append (String val) - est utilisé pour ajouter une valeur de chaîne d'un objet à la fin de l'objet StringBuilder actuel.

Exemple -

StringBuilder a = new StringBuilder(“val”, 10);
a.append(“us”) when you do console.writeline(a), it will give you result “value”

  • Append (Format) - est utilisé pour formater la chaîne d'entrée dans le format spécifié et ensuite l'ajouter.

Exemple -

StringBuilder a = new StringBuilder(“val”, 10);
a.appendFormat(“(0:C)”, 10)

Veuillez exécuter ceci et analyser la variation de ce qui a été fait dans la méthode simple append ().

  • Insert (int index, string value) - insère la chaîne à l'index spécifié dans l'objet StringBuilder.

Exemple

StringBuilder a = new StringBuilder(“val”, 10); a.insert(4, ”ue”)

Exécutez et voyez le résultat

  • Il existe également d'autres méthodes, et de nombreuses variantes des méthodes susmentionnées, pour celles-ci, veuillez vous référer à:

Lien: https://docs.microsoft.com/en-us/dotnet/api/system.text.stringbuilder?view=netframework-4.8

Que pouvez-vous faire avec StringBuilder?

  • StringBuilder a de nombreuses propriétés, méthodes et constructeurs pour résoudre les problèmes de codage, comme nous avons vu le constructeur StringBuilder (), il existe des variantes comme StringBuilder (String, Int32, Int32, Int32) - cela initialisera une nouvelle instance de la classe StringBuilder à partir du sous-chaîne mentionnée et sa capacité.
  • Il y a des propriétés comme - longueur, capacité, capacité max.
  • Il existe des méthodes telles que - appendLine (), Equals (objet), GetHashCode (), GetType (), Remove (int32, int32), Replace (char, char), toString ().

Tous ces éléments permettent de coder facilement et avec moins de lignes de code les problèmes commerciaux typiques.

Vous travaillez avec StringBuilder en C #?

  • L'instanciation de l'objet StringBuilder en appelant le constructeur StringBuilder (Int32, Int32) peut augmenter la longueur et la capacité de l'instance StringBuilder au-delà de la valeur de la propriété MaxCapacity. Cela peut principalement se produire lorsque vous appelez les méthodes Append (String) et AppendFormat (String, Object) pour ajouter de petites chaînes.
  • Si le nombre de caractères ajoutés fait que la longueur de l'objet StringBuilder dépasse sa capacité actuelle, une nouvelle mémoire est allouée, la valeur de la propriété Capacity est doublée, de nouveaux caractères sont ajoutés à l'objet StringBuilder et sa propriété Length est ajustée.
  • Une fois que la capacité maximale est atteinte, aucune allocation de mémoire supplémentaire n'est possible pour l'objet StringBuilder, et si dans tous les cas une expansion au-delà de sa capacité maximale est effectuée, il risque alors de générer l'une des deux erreurs mentionnées.

- ArgumentOutOfRangeException.
- Exception OutOfMemoryException.

Les avantages

  1. Aucun emplacement de mémoire multiple à prendre en charge par C #.
  2. Expansion d'objet dynamique jusqu'à la capacité.
  3. Il peut être converti en chaîne et vice versa.

Pourquoi devrions-nous utiliser StringBuilder en C #?

  • On voit que la chaîne suit les opérations de concaténation et StringBuilder suit l'opération d'ajout et l'ajout semble être plus rapide que concat, car concat doit allouer un nouvel emplacement de mémoire qui ne doit pas être effectué par StringBuilder.
  • Si les données sont transitoires, c'est-à-dire non permanentes et varient selon les différents appels, StringBuilder peut être utilisé, à condition que vous travailliez sans multithreading, sinon la sécurité des threads sera un problème.

Pourquoi avons-nous besoin de StringBuilder en C #?

Eh bien, nous avons discuté de cela dans les points ci-dessus uniquement et on peut en déduire ici les cas d'utilisation où cela peut être utile.

Conclusion

Par conséquent, nous avons vu la différence entre string et StringBuilder, quand utiliser quoi et quels sont les défis ou exceptions qui peuvent apparaître lors de l'utilisation des StringBuilders.

Articles recommandés

Cela a été un guide sur Qu'est-ce que StringBuilder en C #?. Ici, nous avons discuté de la définition, de la compréhension, du travail dans StringBuilder en C # avec des avantages et des exemples, comment utiliser? Pourquoi en avons-nous besoin? et pourquoi devrions-nous l'utiliser?. Vous pouvez également consulter nos autres articles suggérés pour en savoir plus-

  1. StringBuffer vs StringBuilder
  2. Instruction C # if
  3. Boucle Do # while
  4. Fonctions de chaîne C #