C#和C++什么关系呢

yumo6664个月前 (07-01)技术文章14

C++和C#两个不同的语言,它们有什么关系呢?C++用术语叫做非托管语言,C#叫做托管语言。谁托管谁呢?毫无疑问,C++托管了C#。没有了C++,C#就残废了,无法运行。没了C#,C++可以运行吗?当然C++是可以单独运行的。


C#除了BCL以及一些上层库外,它的核心部分CLR+JIT几乎全都是C++以及少量的汇编代码。


不过自举似乎成了一种趋势,比如说Go语言,它进行了90%以上的自举。最新的.Net8 AOT它进行了几乎100%的自举,除了引导文件Bootstrap是C++之外,其它全是C#。


自举有什么好处呢?实际上好处几乎很少,托管的天生比非托管的运行要慢,因为它要解释语言,然后编译语言。而非托管只需要编译即可(这里如果严格一点,非托管也要解释比如IR)。真正的好处可能是统一了上下层的库,不要上层是C#,下层都是C/C++。这样导致interrop满天飞,Fcall/Qcall到处都是的这种情况发生。也让代码阅读性增加,即使到了编译器层面,只需要会C#即可,而不需要额外的学习C++。其它好处嘛,目前没看到。


由于早期的C#诞生实际上对标的是Java,所以C#主打一个降低难度以及跨平台运行的特征。


总体来说,C++和C#是相辅相成的,C#成就了C++上层次的业务运行,C++成就了C#下层的逻辑体系以及框架体系结构。


有人说C#是四个加号的C++,也就是C++++这种,不过某些方面看来确实有点像。


相关文章

简述 C语言 有和 C++ 的基本区别,你真的懂吗?(新手面试必学)

1、c和c++的头文件不同c的头文件------#include c++的头文件---#include2、输入输出不同输入: int i = 10; c:scanf("%d",&...

C与C++ 的真正区别在哪里?

C和C++区别为:结构不同、设计不同、函数库不同。C语言:C语言结构只有成员变量,而没成员方法。C++:C++结构中可以有自己的成员变量和成员函数。一、结构不同1、C语言:C语言结构只有成员变量,而没...

C 语言和 C++ 有什么区别?老程序员居然这样理解,不怕你不懂

差不多是win98跟winXP的关系。C++是在C的基础上增加了新的理论,玩出了新的花样。所以叫C加加。C是一个结构化语言,它的重点在于算法和数据结构。C程序的设计首要考虑的是如何通过一个过程,对输入...

C++和C语言的区别在哪里?

C++是目前国内信息学奥赛的指定语言,它也是现如今最为流行的编程语言之一,因此不少孩子在选择编程语言学习时,会选择C++这一编程语言。由C++的名字不难看出,它与老牌语言C语言之间关系匪浅。那么,C+...

Java培训:C++和Java有什么区别?

  众所周知,C++和Java这两种编程语言都是面向对象的,但是这两种语言在几个方面有所不同。C++是C语言的衍生物,具有面向对象和过程编程语言的特征。基本上,C++是为应用程序和系统开发而设计的,而...

C/C++基础语法复习(一):C++与C语言的区别,主要有这些

和C的区别1.概念:C++ 是一种静态类型的、编译式的、通用的、大小写敏感的、不规则的编程语言,支持过程化编程、面向对象编程和泛型编程。C++ 被认为是一种中级语言,它综合了高级语言和低级语言的特点。...