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



“内部调用”到底是什么?如果不是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指令

关于c# - CLR内部调用用什么语言编写?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/59340645/

10-17 00:08