Maison >développement back-end >C++ >Comment accéder aux membres non statiques à partir des gestionnaires d'événements C# ?

Comment accéder aux membres non statiques à partir des gestionnaires d'événements C# ?

Patricia Arquette
Patricia Arquetteoriginal
2024-12-25 13:41:14872parcourir

How to Access Non-Static Members from Within C# Event Handlers?

Accéder aux membres non statiques dans les gestionnaires d'événements

En C#, l'accès aux membres non statiques à partir des gestionnaires d'événements nécessite une référence d'objet. Cependant, lorsque vous rencontrez l'erreur « Une référence d'objet est requise pour accéder à un champ, une méthode ou une propriété non statique », il peut être difficile de savoir comment la résoudre.

Le problème survient lors de l'utilisation de gestionnaires d'événements pour appeler des méthodes. qui accèdent à des propriétés ou des variables spécifiques à une instance. Pour résoudre ce problème, il existe deux options :

1. Déclarer les membres et les gestionnaires d'événements comme statiques

Cette méthode implique de déclarer les rappels du minuteur comme événements délégués et les variables membres comme statiques au sein de la classe. Cela permet d'accéder aux membres non statiques sans nécessiter de référence d'objet. Cependant, il introduit une dépendance à l'état global, qui n'est généralement pas recommandé pour la testabilité et la maintenabilité.

2. Créer une instance de la classe

Alternativement, une instance de la classe peut être créée et les gestionnaires d'événements peuvent être affectés à des méthodes au sein de cette instance. Cela établit une référence d'objet appropriée et permet l'accès aux membres non statiques.

Par exemple :

MainClass instance = new MainClass();
btn.Clicked += instance.StartClick;
btn_stop.Clicked += instance.StopClick;

Le choix entre ces deux approches dépend du contexte spécifique de l'application. Si l'état global n'est pas un problème, déclarer les membres et les gestionnaires d'événements comme statiques peut être une option appropriée. Cependant, pour les scénarios qui nécessitent une testabilité et évitent l'état global, il est recommandé de créer une instance de la classe.

En comprenant la cause sous-jacente de l'erreur et les solutions disponibles, les développeurs peuvent résoudre efficacement ce problème et maintenir une forte compréhension des principes de programmation orientée objet en C#.

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:
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