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

标签 c# .net clr cil

在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指令

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

相关文章:

.net - .NET 的 LaTeX 渲染器?

c# - 如何|封闭变量存储在哪里?

c# - C# 和非托管 native C++ 是否有一种通用方法来确定已安装的 CLR 版本?

c# - 将 double 格式化为纬度/经度人类可读格式

c# - Streamwriter 锁不工作

c# - 整数的 IComparer 并强制空字符串结束

.net - 解析类型时是否可以更改配置的生命周期管理器?

c# - OutputCache Location=客户端似乎没有工作

c# - 如何从 Excel 的 DataTable 中删除空行?

.net - 向 CLR 的 DynamicMethod 添加状态的最简单方法是什么?