访问事件处理程序中的非静态成员
在 C# 中,从事件处理程序中访问非静态成员需要对象引用。然而,当遇到“访问非静态字段、方法或属性需要对象引用”错误时,可能不清楚如何解决它。
使用事件处理程序调用方法时会出现此问题访问特定于实例的属性或变量。要解决此问题,有两个选项:
1。将成员和事件处理程序声明为静态
此方法涉及将计时器回调声明为委托事件并将成员变量声明为类中的静态。这允许访问非静态成员而不需要对象引用。但是,它引入了对全局状态的依赖,为了可测试性和可维护性,通常不建议这样做。
2.创建类的实例
或者,可以创建类的实例,并将事件处理程序分配给该实例中的方法。这会建立正确的对象引用并允许访问非静态成员。
例如:
MainClass instance = new MainClass(); btn.Clicked += instance.StartClick; btn_stop.Clicked += instance.StopClick;
这两种方法之间的选择取决于应用程序的特定上下文。如果不关心全局状态,则将成员和事件处理程序声明为静态可能是一个合适的选择。但是,对于需要可测试性并避免全局状态的场景,建议创建该类的实例。
通过了解错误的根本原因和可用的解决方案,开发人员可以有效解决此问题并保持强大的了解 C# 中面向对象的编程原理。
以上是如何从 C# 事件处理程序中访问非静态成员?的详细内容。更多信息请关注PHP中文网其他相关文章!