Windows API和.net语言

人们总是告诉我,如果我正在做一些应该使用一些Windows API来完成任何进程级别工作的应用程序,我必须使用VC ++而不是任何其他.net语言。

这有什么道理吗?

使用VC ++可以完成的一切都可以用其他.net语言完成吗?

当比较它们的function时,所有的.net语言都是一样的吗?

如果您需要非常密切地使用本机代码,C ++可能会让生活更轻松。 但是,使用P / Invoke从C#,VB.NET,F#等调用Win32 API并没有什么本质上的错误。

并非所有.NET语言在function方面都是相同的,尽管C#和VB.NET在function上大致相同。 我知道有一些C ++ / CLI公开的东西没有被C#或VB.NET公开 – 我不知道反过来是否正确。 (我不知道对于lambda表达式,扩展方法等,C ++ / CLI是什么样的)

对于类库不提供帮助的大多数任务,使用P / Invoke通常很好。 有许多“粗略”的API可以从简单的C ++ / CLI包装器中受益。 通常最好在C ++ / CLI代码中做到最低限度 – 通过C#,VB.NET等有效地按摩以下的丑陋。

当我开始使用.Net编程时,我使用的是C ++ / CLI,因为我来自一个最小的Win32 C ++背景。 我发现是因为我不理解C ++ / CLI和Win32 C ++之间的界限和界限而感到头疼。 它并不像它们似乎在两者之间互相交换那么容易。 当我了解P / Invoke,让我的生活变得更轻松,我终于开始提升自己的技能。 P / Invoke很好,你不一定需要C ++ / CLI来做到这一点。 在我看来,你要么将Win32 C ++完全用于低级别的东西,要么使用.Net用于高级别的东西,我不建议尝试用C ++ / CLI互操作Win32 C ++,除非你绝对不得不这样做。 即便如此,它可能更容易用你需要的东西制作Win32 DLL并从.Net调用DLL,反之亦然。 永远记得为工作挑选合适的工具。