C#和C++什么关系呢

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++++这种,不过某些方面看来确实有点像。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值