IT干货网

c#之CLR内部调用用什么语言编写

Renyi-Fan 2025年05月04日 编程设计 117 0

在Pro .NET Performance-优化您的C#应用​​程序中第86页的底部,它讨论ValueType.Equals()的实现,并说:

The definition of CanCompareBits and FastEqualsCheck is deferred to the CLR, they are "internal calls", not implemented in IL



“内部调用”到底是什么?如果不是IL,它们用什么语言实现?

请您参考如下方法:

像上面提到的CanCompareBitsFastEqualsCheck这样的方法都用[MethodImpl(MethodImplOptions.InternalCall)]标记,这通知clr需要在其内部查找实现。就CLR而言,它称为FCall,请参阅Calling from managed to native code

由于coreclr是开源的,因此很容易在github上找到实际的实现。
有关FastEqualsCheck的信息,请参见comutilnative.cpp
CoreCLR是用C++和Mono编写的,因此所有此类内部调用的所有代码都是C/C++。

在运行时,与将生成IL(中间语言)的常规.net代码相反,此类内部调用是与平台相关的assember指令


评论关闭
IT干货网

微信公众号号:IT虾米 (左侧二维码扫一扫)欢迎添加!