[MethodImpl(MethodImplOptions.InternalCall)]
public static extern double Sin(double a);
这是什么原因?
答案 0 :(得分:10)
MethodImplOptions.InternalCall
表示该方法由公共语言运行库本机实现。它对数学运算很有意义,因为它们通常针对目标平台进行了大量优化。例如,在x86架构中,有一条指令可以计算正弦和余弦。托管实现不太可能直接使用此类指令。
答案 1 :(得分:4)
最有可能的原因是实现是优化的本机代码。
答案 2 :(得分:3)
实施以原生完成。这不仅仅适用于Sin,还可以查看常见的字符串操作。
CLR知道这些方法,它维护着一个“调用表”。当它看到来自Math.Sin的调用时,它通过“查询”将其重定向到本机实现到调用表中。如果您想查找更多内容,请在转子来源中搜索ecall.cpp,或直接转到here(谷歌代码搜索)。