c# - Visual C++/C# 中的 WinForms 编程与 Visual C++(MFC) 中的 Windows 编程有何不同

标签 c# visual-c++ mfc

用 visual c++/c# 编写的 winforms 编程与用 visual c++(MFC) 编写的 windows 编程有何不同。

我还想知道 C# 是否足够强大,可以像其他形式一样进行 Windows 编程。

最佳答案

我不确定是否有人可以对这个问题给出一个单一的答案,我只能尝试指出许多差异中的一些:

  • C# 和 C++ 截然不同:内存管理、包结构、类布局、事件/委托(delegate)、泛型/模板......甚至在 C++ 和 C# 中编写非 GUI 应用程序也是完全不同的。即使不是为 GUI 开发设计的,C# 语言的许多功能也非常有用。

  • 与 MFC 相比,Winforms 具有非常好的可视化设计器支持。对于 95% 的所有应用程序,使用 winforms 会大大提高工作效率。对于自定义控件(您自己的或第三方的)尤其如此

  • 另一方面,MFC 提供了更多的框架支持(文档/ View 结构等)。

  • 对于某些应用程序,MFC 应用程序的响应速度似乎更快。在大多数情况下,winform 应用程序可以优化为具有相同的性能,但这高于 winforms 开发人员的平均水平(通常低于 MFC 程序员的知识水平)。

  • MFC 比 Winforms 更直接地封装了 WIN32 API。在某些情况下,您甚至需要直接从 winforms 访问 WIN32 API。那么如何做到这一点并不总是很清楚(也没有很好的记录)。同样,典型的 winforms 程序员对 WIN32 API 的了解少于 MFC 程序员,因此在这些情况下他更有可能遇到麻烦。

  • 我认为 winforms 得到了很好的支持,您几乎可以解决所有 GUI/非 GUI 任务。对于大多数任务,编写 C# 程序会更容易。

我敢肯定,赞成/反对的论点还有很多,我只是记下了我想到的少数...

关于c# - Visual C++/C# 中的 WinForms 编程与 Visual C++(MFC) 中的 Windows 编程有何不同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1293191/

相关文章:

c# - LINQ To Entities 无法识别 Last 方法。真的吗?

c# - 如何根据属性合并两个对象列表并将重复项合并到新对象中

c# - 在 C# 中调用 COM 方法会抛出无法解释的 COMException,在 C++ 中工作正常

c# - 如何解析 C# 的命令行输出?

c++ - 当给 std::minstd_rand::seed() 时还有哪些其他值会产生错误?

c++ - 基于堆栈的迷宫探索

c++ - MFC 中的单选按钮(重写)

c++ - 如何对指针的 CArray 进行排序?

c++ - 使用 MFC 在 2 个监视器上扩展 GUI

c++ - 数据对话框验证 : either empty or validated