Comment utiliser la correspondance de motifs en C #?
La correspondance des modèles en C # est une fonctionnalité utilisée pour vérifier les objets par rapport aux modèles et extraire les informations concisement. 1. Les modèles de type permettent la vérification et la coulée en une étape, comme indiqué avec if (valeur est string str). 2. Les modèles constants comparent directement les valeurs avec les constantes, telles que la vérification si (l'entrée est nul). 3. Les expressions de commutation avec des motifs simplifient la logique, démontrée par l'interrupteur de forme renvoyant différentes chaînes en fonction du type de forme. 4. Les modèles récursifs correspondent aux structures imbriquées, comme la personne de vérification est {nom: "Alice", adresse: {City: "Wonderland"}}. Dans l'ensemble, la correspondance des modèles améliore la lisibilité et l'expressivité du code lorsqu'elle est utilisée de manière appropriée.
La correspondance de motifs en C # est une fonctionnalité puissante qui vous permet de vérifier un objet par rapport à un modèle et d'extraire des informations de celui-ci de manière concise et lisible. Il est particulièrement utile lorsque vous travaillez avec différents types, conditions ou structures.

Voici quelques façons pratiques d'utiliser la correspondance des modèles dans votre code C #:
1. Type Modèles - Vérifiez et jetez en une étape
L'une des utilisations les plus courantes de l'appariement des motifs est de vérifier le type d'un objet et de le lancer en même temps.

si (la valeur est string str) { Console.writeline ($ "c'est une chaîne: {str.toupper ()}"); }
Cela remplace le code plus ancien comme:
si (la valeur est une chaîne) { String str = (String) Value; // ... }
Ceci est plus propre et évite de répéter le nom de la variable ou de faire un casting séparé.

2. Modèles constants - Faites correspondre les valeurs spécifiques
Vous pouvez utiliser la correspondance de motifs pour comparer les valeurs avec les constantes directement dans une condition.
si (l'entrée est nul) { Console.writeLine ("l'entrée est nul"); }
Ou avec des valeurs numériques:
commutateur (numéro) { Cas 0: Console.WriteLine ("Zero"); casser; cas var n lorsque n> 0: Console.WriteLine ("positif"); casser; }
Cela peut rendre la logique conditionnelle plus facile à lire, en particulier lorsqu'elle est combinée avec des expressions switch
.
3. Commutation des expressions avec des motifs
C # 8 a introduit les expressions de commutation, qui fonctionnent bien avec la correspondance de motifs pour simplifier la logique.
Résultat de la chaîne = commutateur de forme { Rectangle r => $ "rectangle: {r.width} x {r.height}", Cercle c => $ "cercle: rayon {c.radius}", null => "pas de forme", _ => "Forme inconnue" };
Cela remplace les instructions switch
plus longues et rend le code plus expressif. Le _
est un modèle de défausse qui correspond à tout ce qui n'est pas couvert ci-dessus.
4. Modèles récursifs - correspondent aux structures imbriquées
En C # 9 et plus tard, vous pouvez utiliser des modèles récursifs pour correspondre aux propriétés imbriquées. Par exemple:
if (personne est {nom: "Alice", adresse: {City: "Wonderland"}}) { Console.Writeline ("Found Alice du pays des merveilles"); }
Ceci est utile lorsque vous souhaitez vérifier les données profondément imbriquées sans écrire plusieurs conditions if
.
Quelques choses à garder à l'esprit:
- La correspondance du motif fonctionne mieux
is
,switch
et dans certains cas avec des expressionsswitch
. - Vous pouvez combiner des modèles avec
when
clauses pour des conditions plus complexes. - Évitez de la surutiliser dans une logique profondément imbriquée où la lisibilité pourrait en souffrir.
La correspondance de motifs en C # vous aide à écrire un code plus propre, plus expressif une fois que vous vous êtes habitué à la syntaxe. Ce n'est pas trop complexe, mais il faut un peu de pratique pour savoir quand et comment l'utiliser efficacement.
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

Undress AI Tool
Images de déshabillage gratuites

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.

Stock Market GPT
Recherche d'investissement basée sur l'IA pour des décisions plus intelligentes

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)

La réponse est de lire AppSettings.json à l'aide de Microsoft.Extensions.Configuration. 1. Créez des appsettings.json et définissez les propriétés de copie; 2. Installez le package Microsoft.Extensions.Configuration.json; 3. Chargez la configuration avec ConfigurationBuilder; 4. Lisez la valeur via l'indexeur ou GetConnectionString; 5. Il est recommandé d'utiliser des classes de configuration fortement typées se lier ou se lier.

Usestringforminimal, strictextoperations; UsestringBuilderforfrequentModifications ininloopsorlARGE-ScaleconcatenationStoimproveterformancean pourdcececememoryallocation.

HttpClient doit être réutilisé pendant longtemps plutôt que créé fréquemment. Il est recommandé d'utiliser la gestion de l'injection IhttpClientFactory pour éviter l'épuisement de la prise; S'il n'y a pas de DI, utilisez des cas statiques pour assurer un cycle de vie raisonnable.

La migration des monomères .NET vers les microservices devrait éviter les réécritures ponctuelles. 1. Tout d'abord, effacez la migration des machines mobiles et évitez les pièges communs pour garantir que l'équipe a des DevOps et des capacités d'observabilité; 2. Utilisez le mode Strangler pour remplacer progressivement, acheminer les nouvelles fonctions vers de nouveaux services via des passerelles API; 3. Utiliser la conception axée sur le domaine pour identifier les contextes limités, diviser les services en fonction des limites commerciales et isoler les bases de données; 4. Sélectionnez une méthode de communication appropriée, utilisez HTTP / REST pour les demandes de l'utilisateur et utilisez des messages asynchrones tels que AzureServiceBus pour les événements; 5. Assurer la cohérence des données de service croisé via la cohérence finale de l'événement, le mode SAGA et le mode d'obstruction; 6. Intégration précoce du Serilog, de l'OpenTelemétrie et d'autres outils pour construire la date

First () ThrowsanExceptionIfNoElementsisfound, tandis que le perstordefault () returnsadefaultValue; useFirst () whenthesequenceisexpectiondTobenon-vice, etFirsorDefault () tohandleempty séquences.

Les membres du public sont accessibles par n'importe quel code; 2. Private n'est accessible que dans la classe; 3. Protected permet l'accès aux classes et aux classes dérivées; 4. INTERNEL est limité à l'accès dans le même assemblage; 5.ProtectedInternal est une union de protégée et interne, utilisée pour l'accès à des classes dérivées ou à la même assemblée.

Créez un annulation de l'annulation pour obtenir la réduction de l'annulation, qui est utilisée pour informer d'autres threads ou composants pour annuler l'opération. 2. Passez le jeton à une méthode asynchrone qui prend en charge l'annulation (comme task.run). La tâche peut vérifier périodiquement la demande d'annulation pour réaliser une résiliation gracieuse.

PatternMatchinginc # isafeatuesedToCheckObjectSagainstpatterNSAndextractInformationCisely.1.TypepatterNSallowCheCkingAndcastingInOneStep, AsshownwithIf (ValueAsstringstr) .2
