2016-03-15 28 views
-5

我已经离开了近20年的编程游戏,但每过一段时间我都会用Visual Studio编写一个应用程序。现在是2016年,为什么我仍然需要使用P/Invoke?

我的问题是,由于.NET一直与我们大约13年了,我为什么要曾经已使用本机API又名的P/Invoke?为什么没有一切都转换为官方的.NET托管程序集?

就在最近我遇到了一种情况,我只是想在不使用鼠标的情况下打开和关闭Wifi连接。键盘总是更快(对我来说),但没有标准的Windows键盘快捷键。非常好,我写的一个非常简单的C#程序。想象一下,当我发现我不得不深入到本地API中时,我感到惊讶。我记得在.NET的早期阶段必须这样做 - 确实,一项新技术需要几年才能赶上,对吧?那么现在是2016年。

我想我只是没有看到大局。有人请照亮我。

+1

因为那里还有非托管语言,比如C/C++? – HimBromBeere

+3

因为Windows不是用.NET编写的。很简单。它主要是用C/C++编写的。 – xanatos

+0

我不明白为什么非托管语言对.NET中包含的内容有任何影响。给我举个例子。 – tom

回答

4

因为这不是.NET创建要解决的问题。事实上,人们可以很容易认为,随着跨平台.NET Core的出现,我们甚至远离这一愿景。

Windows API仍然运行良好,并且引擎盖下是 Windows编程的方式。通过这个API来管理特定于Windows的所有实现。对于.NET库来复制每个API调用,该库集合的确必须变得相当大,并且必须抽象出比现在多得多的底层概念。

您使用的每个程序,包括.NET CLR都使用Windows API在Windows上进行工作。

相关问题