我是一名学生,在完成了Java,C的入门编程课程之后,刚刚完成了一本关于C ++的书,我想开始为Windows开发应用程序。
我已经尽力通过谷歌页面找到我需要的答案,但我似乎不知所措。
我什么时候才需要Windows SDK而不是常规API? 什么是.NET,为什么我需要它? C#有什么特别之处,我应该使用C / C ++吗?
我是一名学生,在完成了Java,C的入门编程课程之后,刚刚完成了一本关于C ++的书,我想开始为Windows开发应用程序。
我已经尽力通过谷歌页面找到我需要的答案,但我似乎不知所措。
我什么时候才需要Windows SDK而不是常规API? 什么是.NET,为什么我需要它? C#有什么特别之处,我应该使用C / C ++吗?
我什么时候才需要Windows SDK而不是常规API?
SDK包括标题,库,工具等,使您可以访问API(以及.NET)。例如,一个典型的基于API的程序将从一开始 #include <windows.h>
- 但是没有SDK,您没有要包含的Windows.h副本。同样,SDK包括实际构建基于API的程序所必需的编译器(当前版本的Visual C ++中包含的相同实际编译器),链接器,调试器等。
什么是.NET,为什么我需要它?
.NET有两个方面:一个虚拟机,用于执行微软称之为“中间语言”(IL)的代码。它也是IL中的一个(大型)代码库,用于从窗口管理和绘图到通信,系统管理等各种事务。
如果您使用基于.NET的语言(如C#,VB.NET等)编写代码,则主要需要它。
C#有什么特别之处,我应该使用C / C ++吗?
C#是微软最喜欢的风格,可以这么说。这是他们自己发明的一种语言,他们通常会推广大多数替代品 该 在.NET下使用的主要语言(尽管很少直接说明,至少暗示,对于任何新的开发)。虽然最初有人指责C#仅仅是对Java的剽窃,但实际上它有一些Java没有对应的功能(例如代理),并且已经增加了更多(例如,语言集成查询)。
至于是否使用C#而不是C或C ++,这很可能在很大程度上取决于您编写的代码类型。 C#允许您访问包含真正的.NET库 巨大 预编码的数量。如果您在应用程序中需要执行的操作几乎完全在.NET库支持的范围内,那么能够使用该代码可能会使您的工作成为可能 基本上 更轻松。 C#的一些功能在C或C ++中也没有直接的对应物,因此如果您的代码可以从这些功能中获益更多,C#可能会使这样的工作变得更加容易。最后,Microsoft在C#的支持基础架构上集中了大量精力,因此他们的许多工具(包括但不限于Visual Studio)基本上都是为了支持C#而编写的,并且往往不会支持其他语言。
OTOH,如果你想做.NET所做的事情 不 提供预先编写的代码,情况可以很快改变。 C#支持一种机制(称为P / Invoke),允许您使用.NET不提供包装器的操作系统函数。不幸的是,P / Invoke使用起来相当痛苦 - 如果你必须非常使用它,那么C ++(或者甚至是C)很有可能会更有效率。
我还应该提一下,虽然看起来微软已经致力于 更多 与其他语言相比,C#新开发的资源,他们显然仍然在进行C ++及其MFC应用程序框架的新开发。毫无疑问,就新代码的数量而言,他们显然在使用.NET做得更多。尽管如此, 一些 MFC的新发展恰好出现在他们所拥有的领域 不 在.NET中开发,所以MFC有一些功能,.NET没有提供对应的功能。
Windows SDK是一个用于开发专门用于Windows的应用程序的低级框架。您可以将它用于开发。但是,API是低级的,有点难以使用和维护。
或者,您可以使用.Net。 .Net是一个包含运行时支持的框架。它有很多包,我相信你会在.Net中找到有用的东西。 .Net需要运行时来执行,而不是本机编译到平台。但是,软件开发更容易,因为API更高级别。
C#是Windows特定编程的推荐语言,特别是.Net。并不是说它是唯一的语言,你也可以使用C / C ++,但微软并不积极支持它们。例如,如果您使用C#,只需点击几下鼠标即可创建GUI应用程序。使用C ++,您需要管理您的Windows实例。
通常,如果您正在进行跨平台编程或某些低级内容,则只能使用C / C ++进行Windows编程。