


Une brève explication de l'utilisation des classes Builder et Buffer en C#
Cet article présente brièvement l'utilisation des trois classes String StringBuilder et StringBuffer en C#. Les amis qui en ont besoin peuvent s'y référer
String, StringBuilder et StringBuffer méritent d'être étudiés en profondeur. beaucoup de gens peuvent dire que si cela ne fonctionne pas, utilisez simplement StringBuilder et rien ne se passera. Je ne peux pas dire que votre idée est incorrecte, mais je peux vous donner de meilleures suggestions. Vous trouverez ci-dessous une brève introduction à ces trois catégories.
Classe String
Dans notre utilisation quotidienne, il est facile de ne pas remarquer que le code que nous écrivons peut facilement être encadré Opération (convertir la valeur type en type de référence). Par exemple, une concaténation de chaînes très courante
string str=9+"test";
peut être constatée en regardant le code IL indiquant qu'une opération de boxe a eu lieu ici. Il est donc recommandé de l'utiliser (n'oubliez pas d'utiliser la méthode ToString lors de la conversion du type valeur en chaîne). Ainsi, lorsque vous écrivez habituellement du code, vous devez faire attention aux opérations de boxing et de unboxing (les collections génériques présentées plus tard visent simplement à résoudre les opérations de boxing et de unboxing). Le processus d'opération de boxe : placer le type valeur dans le tas géré pour allouer de la mémoire En plus de la mémoire allouée par le type valeur lui-même, la mémoire totale doit également ajouter la mémoire occupée par le pointeur d'objet de type et le bloc d'index de synchronisation, et puis la valeur La valeur du type est réaffectée dans la mémoire tas, et enfin l'adresse de l'objet du type référence est renvoyée.
Nous savons que de nombreux types (types valeur) sont livrés avec une méthode ToString. Pourquoi ne l'utilisez-vous pas pour éviter les opérations de boxe ? C'est une simple vérité. Personne ne vous a dit que le type Value (). bien qu'il s'agisse d'un type référence), le concepteur du langage C#, pour y parvenir, il a imaginé cette méthode
pour convertir l'objet String en un type valeur qui ne peut plus être modifié une fois attribué (appelé la constance de la chaîne), une fois l'affectation terminée, si la chaîne est épissée, attribuée, etc., un nouvel espace mémoire sera réalloué dans la mémoire.
StringBuilder
Sur la base du problème ci-dessus, la classe de chaîne réallouera l'espace mémoire lors de la réaffectation, donc afin de résoudre ce problème, Microsoft lancé une classe StringBuilder. Vous pouvez voir comment la classe StringBuilder ne réalloue pas de mémoire.
En lisant l'implémentation de la classe StringBuiler, on peut constater que la taille par défaut de la classe
internal const int DefaultCapacity = 0x10; StringBuilder
est de 16, ce qui signifie que si on ne précise pas la longueur de StringBuilder et dépasse 16 longueurs, il réaffectera à nouveau la mémoire. Pour une implémentation spécifique, vous pouvez consulter le code source Append de la classe StringBuilder.
Il ressort du code que lorsque nous utilisons habituellement StringBuilder, nous devons spécifier la longueur appropriée. Le bloc d'instructions fixes dans le code source (en termes simples, vous pouvez désactiver le garbage collection et recycler l'adresse de la variable).
Résumé : lors de l'écriture de code, vous devez faire attention aux opérations de boxing et de unboxing, ainsi qu'à l'utilisation de stringBuilder.
【Recommandations associées】
1 Recommandation spéciale : "php Téléchargement de la version V0.1 de "Programmer Toolbox"
Tutoriel vidéo de base de Li Yanhui ASP
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!

Outils d'IA chauds

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

Video Face Swap
Échangez les visages dans n'importe quelle vidéo sans effort grâce à notre outil d'échange de visage AI entièrement gratuit !

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Sujets chauds

Guide d'Active Directory avec C#. Nous discutons ici de l'introduction et du fonctionnement d'Active Directory en C# ainsi que de la syntaxe et de l'exemple.

Guide de sérialisation C#. Nous discutons ici de l'introduction, des étapes de l'objet de sérialisation C#, du fonctionnement et de l'exemple respectivement.

Guide du générateur de nombres aléatoires en C#. Nous discutons ici du fonctionnement du générateur de nombres aléatoires, du concept de nombres pseudo-aléatoires et sécurisés.

Guide de la vue Grille de données C#. Nous discutons ici des exemples de la façon dont une vue de grille de données peut être chargée et exportée à partir de la base de données SQL ou d'un fichier Excel.

Guide de Factorial en C#. Nous discutons ici de l'introduction de factorial en c# ainsi que de différents exemples et de l'implémentation du code.

Guide des modèles en C#. Nous discutons ici de l'introduction et des 3 principaux types de modèles en C# ainsi que de ses exemples et de l'implémentation du code.

Guide des nombres premiers en C#. Nous discutons ici de l'introduction et des exemples de nombres premiers en c# ainsi que de l'implémentation du code.

La différence entre le multithreading et l'asynchrone est que le multithreading exécute plusieurs threads en même temps, tandis que les opérations effectuent de manière asynchrone sans bloquer le thread actuel. Le multithreading est utilisé pour les tâches à forte intensité de calcul, tandis que de manière asynchrone est utilisée pour l'interaction utilisateur. L'avantage du multi-threading est d'améliorer les performances informatiques, tandis que l'avantage des asynchrones est de ne pas bloquer les threads d'interface utilisateur. Le choix du multithreading ou asynchrone dépend de la nature de la tâche: les tâches à forte intensité de calcul utilisent le multithreading, les tâches qui interagissent avec les ressources externes et doivent maintenir la réactivité de l'interface utilisateur à utiliser asynchrone.
