有人可以告訴爲什麼,創建C#語言,現在我們在C#4.0, 不要有一個重要特徵是C++ \ CLI具有很大的微軟!!,這是直接編譯和鏈接與未託管的C++?非託管C++ .NET中
回答
C#是一種不同的語言。它不必包含任何其他語言的所有功能,以便對其用戶社區有用。尤其是,C#4.0的重點一直是通過吸收動態(腳本)語言的特性來完全轉向C++。同樣,在C#與C/C++共享功能(例如指針)的地方,它們被隔離在一個特殊的「不安全」模式中,以表明它們通常是不受歡迎的。
此外,由於.NET是一個多語言平臺,它是沒有必要的每一種語言,包括爲了他們的互操作所有其他語言的所有功能。無論如何,他們都可以輕鬆地打電話給對方。
注意,C++和C#從根本上相互不同意的關鍵字和運營商的意義。例如:(姑且不論這應該具有後與否分號(任選被一個逗號分隔的變量聲明的列表之前),其將是棘手的統一)
class C { }
C應該是一個本地C++類,可以使用非託管內存進行分配,並將其傳遞給其他本地代碼,而不必將其固定在GC中?或者它應該是一個可以傳遞給其他.NET庫的.NET類?
或者怎麼樣:
C c;
應該就是聲明引用到C
,或創建C
一個實例?
或者怎麼樣:
new C()
應該就是在本地C++或堆在GC .NET堆上分配?
在C++/CLI中,所有這些問題都必須解決。從以前版本中發生的混亂中學習,Microsoft通過使用不同的關鍵字(如gcnew
而不是new
)清楚地分隔了C++/CLI中的兩個世界。
如果您試圖讓C#像現在一樣編譯C++,那麼您必須重命名許多已經是C#基礎的操作,從而打破了與所有現有C#程序的兼容性。
會有什麼意義?
因爲C#是託管語言,旨在用於編寫託管代碼和C++/CLI已經存在彌合誰需要直接聯繫非託管的C/C++代碼的人的差距?
我不確定爲什麼你想要更多的本地鏈接支持超越DllImport/PInvoke。更重要的是,您只需重新創建C++/CLI,但語法不同。
有人說,背後C#與VB.NET的故事,太;-) – Joey 2010-04-02 07:07:15
由於託管和非託管代碼保持分開。在CLR中執行代碼,而非託管代碼不執行。您可以使用P/Invoke將託管代碼與非託管代碼鏈接起來。
Eseentially這是爲了幫助你編組信息進出管理世界。
是的,但例如: 然後,我需要實現其託管版本中的每個匹配結構,因爲它不需要通過C++/CLI通過C++ Interop進行。 – Robocide 2010-04-02 07:19:53
那麼爲什麼不使用mC++呢? – 2010-04-02 07:37:45
- 1. 從非託管C++配置.NET庫
- 2. 混合託管/非託管C++?
- 3. 調試託管的.NET代碼從非託管C++調用
- 4. C++託管和非託管靜態庫
- 5. C++託管到非託管轉換
- 6. 託管和非託管C++和Boost
- 7. Gdiplus在C++託管或非託管?
- 8. 在非託管C++代碼
- 9. 如何在非託管C++應用程序中託管許可的.Net控件?
- 10. 在混合C++ .NET應用程序中強調託管還是非託管?
- 11. .NET中的託管代碼和非託管代碼
- 12. 將非託管數據映射到.NET中的託管結構
- 13. .NET中「託管」與「非託管」資源的含義是什麼?
- 14. .Net中的託管和非託管資源
- 15. c#中的管理非託管變量
- 16. 從非託管C Dll加載託管C++ Dll?
- 17. 在非託管C++ dll中使用託管c#dll
- 18. 託管C#中的自由非託管C代碼內存
- 19. 如何捕捉託管C++中的非託管C++異常
- 20. 非託管char *數組託管System ::字符串託管C++
- 21. C#中的非託管C++類
- 22. C中的C++非託管DLL#
- 23. 傳遞非託管的指針非託管對象在託管類C++/CLI
- 24. 調試MMC(非託管C++)?
- 25. 持續與非託管C++
- 26. 託管.Net C++/CLI - 結構
- 27. 揭露非託管量靜態的std :: string在託管C++類
- 28. 在.Net中獲取和讀取非託管C++指針
- 29. 非託管環境中的.NET泛型(C#)(VB6.0)
- 30. 使用非託管的FindFirstVolume枚舉C#中的.NET的卷#
是.NET是多語言平臺,但正如我們所看到的,所有的c#都在它們前面,所以我們期望它在c#中,甚至我們甚至在C#中使用VB的默認參數(從C++取得的)。 .. – Robocide 2010-04-02 07:14:03
誰是「我們」?我自己說,因爲.NET是一個多語言平臺,我希望它能夠支持多種語言並擁有自己的特色。 C#的利基不包括「成爲C++的超集」。 – 2010-04-02 07:30:44