我想开发一个Windows应用程序。如果我使用本地的C++和MFC来制作用户界面,那么应用程序将非常快速和小巧。但是使用MFC非常复杂。而且如果我使用C#,那么应用程序将比本地代码慢,并且需要.NET框架才能运行。但是使用WinForm来开发GUI非常容易。你更喜欢哪个?
我想开发一个Windows应用程序。如果我使用本地的C++和MFC来制作用户界面,那么应用程序将非常快速和小巧。但是使用MFC非常复杂。而且如果我使用C#,那么应用程序将比本地代码慢,并且需要.NET框架才能运行。但是使用WinForm来开发GUI非常容易。你更喜欢哪个?
要注意不要过早优化;你提到代码速度,但对于大多数Windows用户界面操作来说,两种方法的主要瓶颈——绘图和磁盘访问并没有什么不同,因此差异并不明显。
我的建议是使用C#和WPF或WinForms来制作用户界面。如果遇到一些缓慢的情况,请使用分析器确定位置,然后考虑用本地代码替换一些业务逻辑,但前提是有好处。
有许多可能的Windows应用程序,每个应用程序都有自己的要求。
如果您的应用程序需要快速运行(而我所从事的工作确实需要),那么使用本机C++是一个不错的选择。
如果您的应用程序需要变得更小(也许是为了在慢速线路上传输),那么请使用任何可以使其更小的方法。
如果您的应用程序很可能被大量下载,则可能要对后期版本的.NET保持警惕,因为您的用户可能还没有安装。
如果像大多数应用程序一样,在它可能被使用的系统上运行速度和大小足够快且小,那么请使用最能让您快速开发和优化的方法。
几乎在所有情况下,正确的优化对象是开发人员的工作。使用任何可以最快最好地完成高质量工作的方法。
首先..(虽然我是一位狂热的c++编程人员)我必须承认,在大多数情况下,c#在速度和大小方面都非常好。在某些情况下,应用程序更小,因为解释部分已经在目标系统上。 (不要在这个问题上向我发送垃圾邮件,一个带有dll的应用程序比全部在一个应用程序中更小。Windows恰好已经随着“DLL”出现了。)
至于编码..我真的不认为有什么显著的区别。我不会花很多时间打代码。大部分时间都在思考问题。代码部分相当少。在这里节省几行代码..这对我来说并不是一个争论的点..如果是的话,我就会在APL中工作。学习STL、MFC等等也可能像学习c#库一样强化。最终它们都是一样的。
C#确实有一个优点..市场。它是最新的“热门”技能,因此有市场需求。找工作很容易。现在请记住,几年前Java是一个“热门”技能,现在每个人的简历上都有它。这使得你更难以成为一个特定领域的专家。
好的..所有这些都说了..我喜欢c++..没有什么比在真正需要时变得肮脏的感觉更好了。当MFC库无法胜任工作时,我会看看它们所依赖的内容等等..它是一种常青语言,我相信它仍然是世界上使用最多的语言之一。是啊,c++,耶!
请注意,大多数Windows计算机已经安装了.NET,所以这真的不应该成为一个问题。
此外,除了.NET安装之外,.NET应用程序往往非常小。
对于大多数带有UI的应用程序来说,用户速度才是真正的限制时间因素。
C# 应用程序启动比 MFC 应用程序慢,但一旦应用程序加载完成,您可能不会注意到两者之间的速度差异。
没有关于您计划开发的应用程序的信息,我建议使用WPF。
在我看来,需求应该帮助你决定平台。什么更重要:拥有一个易于维护的应用程序还是必须非常快速和小巧的应用程序?
现今许多应用程序可以使用.NET和托管代码编写,这通常对长期开发有益。根据我的经验,大多数情况下.NET应用程序的速度已经足够快,并且它们更容易创建。 原生C++仍然有其用途,但仅仅因为“更快更小”,当“足够快和足够小”已经足够时,这并不足以成为正当理由。
本地代码和托管代码之间的速度参数在这一点上基本上不是问题。每个 .NET Framework 的发布都会对以前的版本进行性能改进,应用程序性能始终是 .NET 开发团队非常重视的事项。
从 Windows Vista 和 Windows Server 2008 开始,.NET Framework 作为操作系统的一部分安装。它也是 Windows Update 的一部分,因此几乎任何 Windows XP 系统也都已安装了它。如果要求在目标机器上安装框架确实是一个大问题,那么还有编译器可以将所需的运行时部分嵌入到您的应用程序中生成单个 exe,但它们很昂贵(而且在我看来,不值得花费)。
MFC并不难学,实际上非常容易。
几乎与C#相当。