事件处理程序访问修饰符MFC与C#WinForms

本文关键字:MFC C#WinForms 程序 访问 事件处理 | 更新日期: 2023-09-27 18:28:47

我最近一直在开发MFC和C#Windows窗体应用程序,我注意到自动生成的事件处理程序上的访问修饰符之间存在差异。

在MFC 中

public:
afx_msg void OnBnClickedOk();

在C#Win窗体中

private void button1_Click(object sender, EventArgs e)

所以我的问题是,为什么事件处理程序在MFC中被宣布为公共的,尽管C#方式在技术上更好,因为它促进了封装(这可能是它被更改的原因)。

感谢

事件处理程序访问修饰符MFC与C#WinForms

我做MFC已经有一段时间了。。。

最终,C#和MFC调度消息的方式是不同的,同样,这两者不仅是不同的语言,而且是完全不同的平台-因此,仅仅因为事件处理方法的可见性,就说其中一种比另一种"更好"是不正确的,尤其是。没有什么可以阻止你改变C#处理程序的可见性,事实上,在某些情况下,你可能需要这样做才能假调用事件(尽管还有其他更合适的架构方法可以实现同样的事情)。

通常,默认情况下,表单的控件及其事件是它自己的事务,这是完全合理的。同样,关于C#的默认private立场的另一条线索是处理程序的签名——它们都需要发送者和事件数据(注意MFC没有)——如果底层控件是私有的,那么就没有理由将其公开或保护,因为外部调用方无法向事件处理程序提供正确的参数。

在这方面,处理程序是私有的是正确的。