尝试在事件处理程序内调用在 GUI 外部声明的 GUI 元素的非静态方法时类时,开发人员可能会遇到错误消息“需要对象引用才能访问非静态字段、方法或属性''..."
发生此错误是因为事件处理程序需要类的实例来访问其方法和字段。默认情况下,GUI 元素需要先创建类的实例,然后才能使用它们,并且由于这些回调被定义为任何类外部的独立函数,因此它们缺少必要的对象引用。
要解决此问题,请考虑两个选项:
public static void StartClick(object obj, EventArgs args) { // Non-static members can be accessed directly }
MainClass instance = new MainClass(); btn.Clicked += instance.StartClick; btn_stop.Clicked += instance.StopClick;
这些选项之间的选择取决于预期的应用程序设计。出于可测试性和可维护性的考虑,全局静态变量可能是不受欢迎的。另一方面,创建一个类的多个实例可能是不必要的。了解错误消息背后的原因使软件工程师能够就可访问性和设计模式做出明智的决策。
以上是在 GUI 事件处理程序中使用非静态方法时,为什么会出现'需要对象引用...”?的详细内容。更多信息请关注PHP中文网其他相关文章!