2009-02-07 69 views
4

人们总是建议我,如果我正在做一些应该使用某些Windows API来执行任何进程级别作业的应用程序,那么我必须使用VC++而不是任何其他.net语言。Windows API和.net语言

这有什么道理吗?

使用VC++可以完成的任何事情都可以在其他.NET语言中完成吗?

所有.net语言在比较它们的功能时是否一样?

回答

10

如果您需要相当密切地使用本机代码,C++可能会使生活更轻松。然而,使用P/Invoke从C#,VB.NET,F#等调用Win32 API没有任何内在错误。

尽管C#和VB.NET并非所有的.NET语言在功能上都是相同的在功能上相当于,主要是。我知道C++/CLI公开的某些东西没有被C#或VB.NET公开 - 我不知道反过来是否属实。 (我不知道什么C++/CLI对于lambda表达式,扩展方法等是什么)

+1

C++/CLI不支持lambda表达式或扩展方法。 – JaredPar 2009-02-07 20:55:31

2

对于大多数类库不提供帮助的任务,使用P/Invoke通常很好。有很多“粗糙”的API可以从简单的C++/CLI包装中受益。通常最好在C++/CLI代码中做最低限度的工作 - 有效地按照C#,VB.NET等消耗低于以下的程度。

2

当我在.Net中开始编程时,我使用C++/CLI,因为我来自最小的Win32 C++背景。我发现我很头疼,因为我不明白C++/CLI和Win32 C++之间的界限和界限。它并不像他们似乎在两者之间进行交互一样简单。当我了解到P/Invoke,并且让我的生活变得更加轻松时,我终于开始提高自己的技能。 P/Invoke很好,你不一定需要C++/CLI来做到这一点。在我看来,你要么完全使用Win32 C++来实现低层次的东西,要么使用.NET来实现高层次的东西,而且我并不真正推荐使用C++/CLI来互操作Win32 C++,除非你绝对需要。即使这样,它可能更容易使你所需要的Win32 DLL和P /从.Net调用DLL,反之亦然。永远记得选择合适的工具。