2009-02-07 27 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,反之亦然。永遠記得選擇合適的工具。