


Comment définir et utiliser des événements personnalisés en C#
Méthode C# de définition et d'utilisation d'événements personnalisés dans un programme : définissez d'abord l'événement dans la classe ; puis définissez les paramètres de l'événement ; puis déclenchez l'événement dans TestClass et enfin utilisez l'événement.
Les étapes permettant à C# de définir et d'utiliser des événements personnalisés dans le programme sont : définissez d'abord l'événement dans la classe, puis définissez les paramètres de l'événement dans TestClass Déclencher l'événement et enfin utiliser l'événement
[Cours recommandé : Tutoriel C#]
C# définir et utiliser des événements personnalisés dans le programme peut être divisé en plusieurs étapes suivantes :
Étape 1 : Définir l'événement dans la classe
using System; public class TestClass { //.... public event EventHandler TestEvent }
Étape 2 : Définir les paramètres de l'événement
Remarque : La classe de paramètres d'événement TestEventArgs hérite de System.EventArgs
using System; public class TestEventArgs : EventArgs { public TestEventArgs() : base() { } public string Message { get; set; } }
Étape 3 : Déclencher l'événement dans TestClass
public class TestClass { // 这个方法引发事件 public void RaiseTestEvent(string message) { if (TestEvent == null) return; TestEvent(this, new TestEventArgs { Message = message }); } public event EventHandler TestEvent; }
Étape 4 : Utiliser l'événement
class Program { static void Main(string[] args) { TestClass tc = new TestClass(); // 挂接事件处理方法 tc.TestEvent += Tc_TestEvent; Console.WriteLine("按任意键引发事件"); Console.ReadKey(); // 引发事件 tc.RaiseTestEvent("通过事件参数传递的字符串"); Console.WriteLine("按任意键退出"); Console.ReadKey(); } private static void Tc_TestEvent(object sender, EventArgs e) { // 将事件参数强制转换为TestEventArgs TestEventArgs te = (TestEventArgs)e; // 显示事件参数中的Message Console.WriteLine(te.Message); } }
La procédure complète est la suivante
using System; public class TestClass { public void RaiseTestEvent(string message) { if (TestEvent == null) return; TestEvent(this, new TestEventArgs { Message = message }); } public event EventHandler TestEvent; } public class TestEventArgs : EventArgs { public TestEventArgs() : base() { } public string Message { get; set; } } class Program { static void Main(string[] args) { TestClass tc = new TestClass(); tc.TestEvent += Tc_TestEvent; Console.WriteLine("按任意键引发事件"); Console.ReadKey(); tc.RaiseTestEvent("通过事件参数传递的字符串"); Console.WriteLine("按任意键退出"); Console.ReadKey(); } private static void Tc_TestEvent(object sender, EventArgs e) { TestEventArgs te = (TestEventArgs)e; Console.WriteLine(te.Message); } }
Résumé : Ce qui précède est tout le contenu de cet article, j'espère qu'il sera utile à tout le monde.
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
