Maison développement back-end Tutoriel C#.Net Une brève explication de l'utilisation des classes Builder et Buffer en C#

Une brève explication de l'utilisation des classes Builder et Buffer en C#

May 15, 2017 am 09:27 AM
c# string stringbuffer stringbuilder

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"

2. Tutoriel vidéo gratuit ASP

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!

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

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

Video Face Swap

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 !

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

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

Active Directory avec C# Active Directory avec C# Sep 03, 2024 pm 03:33 PM

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.

Sérialisation C# Sérialisation C# Sep 03, 2024 pm 03:30 PM

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.

Générateur de nombres aléatoires en C# Générateur de nombres aléatoires en C# Sep 03, 2024 pm 03:34 PM

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.

Vue Grille de données C# Vue Grille de données C# Sep 03, 2024 pm 03:32 PM

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.

Factorielle en C# Factorielle en C# Sep 03, 2024 pm 03:34 PM

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.

Modèles en C# Modèles en C# Sep 03, 2024 pm 03:33 PM

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.

Nombres premiers en C# Nombres premiers en C# Sep 03, 2024 pm 03:35 PM

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 le C # asynchrone La différence entre le multithreading et le C # asynchrone Apr 03, 2025 pm 02:57 PM

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.

See all articles