有人可以告诉为什么,创建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