Qu'est-ce que StringBuilder en C#

WBOY
Libérer: 2024-09-03 15:22:23
original
1083 Les gens l'ont consulté

L'article suivant, Qu'est-ce que StringBuilder en C#, fournit un aperçu de StringBuilder en C#. Avant de parler de StringBuilder, voyons d'abord le concept d'immuabilité. Si vous connaissez les chaînes, vous saurez 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 mémoire lui est fourni et donc à chaque fois. un changement de données se produit, les données modifiées doivent être placées dans un nouvel emplacement mémoire et conserver la chaîne d'origine en sécurité. Maintenant, n’y réfléchissons pas. Quel est le cas d’usage de cette approche ? Eh bien, si vous définissez des informations d'identification telles que les détails de la base de données, d'autres informations d'identification qui ne seront pas modifiées pendant le temps transitoire, vous pouvez utiliser String pour cela afin de les protéger. Il existe maintenant un autre type d'objet, appelé StringBuilder, c'est-à-dire de nature mutable, qui vous permet donc d'économiser de la mémoire en vous permettant de modifier les données dans l'emplacement mémoire actuel uniquement. De telles choses sont utiles lorsque vous cherchez à avoir plusieurs opérations d'ajout à votre disposition.

Définition de StringBuilder en C#

StringBuilder est une classe qui représente un jeu de caractères mutable et c'est un objet du système. Espace de noms de texte. StringBuilder est un objet dynamique par nature et, par conséquent, StringBuilder ne crée pas de nouvel objet dans la mémoire, mais étend 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 multithread 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 vient le moment où l'on doit comprendre les résultats auxquels la mutabilité peut conduire, 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 récupérez des données d'un formulaire HTML qui doivent être stockées dans un tableau basé sur une logique métier, qui validera d'abord les données, dans ce cas, vous pouvez créer un objet StringBuilder et ajouter tous les champs de données, en association avec les colonnes de la 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, un nouvel emplacement 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=new StringBuilder(10);
Copier après la connexion
StringBuilder s=new StringBuilder("object value", 15);
Copier après la connexion

4. La propriété StringBuilder.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# rend-il le travail si facile ?

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 –

classStringBuilder a = new StringBuilder("val",10);
a.append("us")
Copier après la connexion

Quand vous faites console.writeline(a), cela vous donnera le résultat « valeur »

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

Exemple –

StringBuilder a = new StringBuilder("val",10);
a.appendFormat("{0:C}",10)
Copier après la connexion

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

  • Insérer (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")
Copier après la connexion

Exécuter et voir le résultat

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

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 de la sous-chaîne mentionnée et de sa capacité.
  • Il existe des propriétés telles que la longueur, la capacité, la capacité maximale.
  • Il existe des méthodes comme – appendLine(), Equals( object ), GetHashCode(), GetType(), Remove( int32, int32 ), Replace( char,char ), toString().

Ceux-ci constituent tous une tâche permettant de coder facilement et avec moins de lignes de code des 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é Capacité est doublée, de nouveaux caractères sont ajoutés à l'objet StringBuilder et sa propriété Longueur est ajusté.
  • Une fois la capacité maximale atteinte, toute allocation supplémentaire de mémoire n'est plus possible pour l'objet StringBuilder , et si dans tous les cas une expansion au-delà de sa capacité maximale est effectuée, il est probable qu'elle génère l'une des deux erreurs mentionnées.

ArgumentOutOfRangeException.
OutOfMemoryException.

Avantages

  • Pas de plusieurs emplacements mémoire à prendre en charge par C#.
  • Extension dynamique des objets jusqu'à la capacité.
  • Il peut être converti en String et vice versa.

Pourquoi devrions-nous utiliser StringBuilder en C# ?

  • On voit que la chaîne suit les opérations de concatération et que StringBuilder suit l'opération d'ajout et ajoute
  • semble être plus rapide que concat car concat doit allouer un nouvel emplacement mémoire qui ne doit pas être fait 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 en avons discuté uniquement dans les points ci-dessus et on peut en déduire ici les cas d'utilisation où cela peut s'avérer utile.

Conclusion

Nous avons donc vu la différence entre string et StringBuilder, quand utiliser quoi et quels sont les défis ou exceptions qui peuvent apparaître lorsque vous travaillez avec StringBuilder.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:php
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal