在Pro .NET Performance-优化您的C#应用程序中第86页的底部,它讨论ValueType.Equals()
的实现,并说:
“内部调用”到底是什么?如果不是IL,它们用什么语言实现?
最佳答案
像上面提到的CanCompareBits
或FastEqualsCheck
这样的方法都用[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/