.NET有C#和VB*作为(相对的)高级语言,它们都编译成.NET CLI中间代码(.NET相当于Java的 "字节码"),而不是本地机器代码。还有C++CLI,它可以让你为.NET CLI中间代码写代码。
这些可以像C#VB项目一样相互熟悉,C++CLI代码能够使用C#定义的元素(类、方法、属性),其关键字像 gcnew
和记号 ^
和C#VB代码。C++CLI允许使用指针、内存分配、获取和设置内存中的实际字节(通过指针)。然而,这些都是可以用C#(和VB?unsafe
关键字。
这两种方式有区别吗?是否有一些东西可以用一种方式实现而另一种方式不能实现?是否有性能上的差异(考虑两者都编译成中间的.NET CLI代码而不是机器代码)?
* 当我说C#VB的时候,我只知道C#的部分,所以我可能由错。我对VB不熟悉。
先谢谢你了!
C++CLI的主要原因是为了有一个简单的方式与原生c++库接口,这是最重要的区别。
在c++cli中,有一个使用原生VS C++编译器编译原生代码的可能性。这可以提供一个速度,因为它可以使用较低级别的技术,包括SIMD,而且一般来说编译器在优化方面更好。源代码.
如果两者都编译成MSIL,那么在这两种情况下,你的性能将主要取决于JIT编译器。但可能会有一些我不知道的小区别。