我什么时候需要Windows SDK以及什么是.NET?

我是一名学生,在完成了Java,C的入门编程课程之后,刚刚完成了一本关于C ++的书,我想开始为Windows开发应用程序。

我已经尽力通过谷歌页面找到我需要的答案,但我似乎不知所措。

我什么时候才需要Windows SDK而不是常规API? 什么是.NET,为什么我需要它? C#有什么特别之处,我应该使用C / C ++吗?

我什么时候才需要Windows SDK而不是常规API?

SDK包括标题,库,工具等,使您可以访问API(以及.NET)。 例如,一个典型的基于API的程序将以#include 开头 – 但是没有SDK,您没有要包含的Windows.h的副本。 同样,SDK包括实际构建基于API的程序所必需的编译器(当前版本的Visual C ++中包含的相同实际编译器),链接器,调试器等。

什么是.NET,为什么我需要它?

.NET有两个方面:一个虚拟机,用于执行微软称之为“中间语言”(IL)的代码。 它也是IL中的一个(大型)代码库,用于从窗口管理和绘图到通信,系统管理等各种事务。

如果您使用基于.NET的语言(如C#,VB.NET等)编写代码,则主要需要它。

C#有什么特别之处,我应该使用C / C ++吗?

C#是微软最喜欢的风格,可以这么说。 这是他们自己发明的一种语言,他们通常会将大部分替代品作为.NET下使用主要语言进行推广(尽管很少直接说明,至少暗示,对于任何新的开发)。 虽然最初有人指责C#只不过是对Java的剽窃,但它实际上有一些Java没有对应的function(例如代表),并且已经添加了更多(例如,语言集成查询)。

至于是否使用C#而不是C或C ++,这很可能在很大程度上取决于您编写的代码类型。 C#允许您访问.NET库,其中包含大量预编写的代码。 如果您在应用程序中需要执行的操作几乎完全在.NET库支持的范围内,那么能够使用该代码可能会使您的工作变得更加容易。 C#的一些function在C或C ++中也没有直接的对应物,因此如果您的代码可以从这些function中获益更多,C#可能会使这样的工作变得更加容易。 最后,Microsoft在C#的支持基础架构上集中了大量精力,因此他们的许多工具(包括但不限于Visual Studio)基本上都是为了支持C#而编写的,并且往往不会支持其他语言。

OTOH,如果你想做.NET不提供预编写代码的事情,情况可能会很快发生变化。 C#支持一种机制(称为P / Invoke),允许您使用.NET不提供包装器的操作系统函数。 不幸的是,P / Invoke使用起来相当痛苦 – 如果你必须非常使用它,那么C ++(或者甚至是C)很有可能会更有效率。

我还要提一下,虽然看起来微软已经为C#的新开发投入比其他语言更多的资源,但它们仍然显然在进行C ++及其MFC应用程序框架的新开发。 毫无疑问,就新代码的数量而言,他们显然在使用.NET做得更多。 尽管如此,MFC中的一些新发展恰好出现在他们尚未在.NET中开发的领域,因此MFC具有.NET提供的一些function。

Windows SDK是一个用于开发专门用于Windows的应用程序的低级框架。 您可以将它用于开发。 但是,API是低级的,有点难以使用和维护。

或者,您可以使用.Net。 .Net是一个包含运行时支持的框架。 它有很多包,我相信你会在.Net中找到有用的东西。 .Net需要运行时来执行,而不是本机编译到平台。 但是,软件开发更容易,因为API更高级别。

C#是Windows特定编程的推荐语言,特别是.Net。 并不是说它是唯一的语言,你也可以使用C / C ++,但微软并不积极支持它们。 例如,如果您使用C#,只需点击几下鼠标即可创建GUI应用程序。 使用C ++,您需要管理您的Windows实例。

通常,如果您正在进行跨平台编程或某些低级内容,则只能使用C / C ++进行Windows编程。