7

我正在研究一些框架代码(System.AppDomain.GetDynamicDir 方法),这就是汇编程序显示的全部内容:

[MethodImpl(MethodImplOptions.InternalCall)]
private extern string GetDynamicDir();

调用此方法时会发生什么?我不是指这个特定的方法,而是具有这个属性的一般方法。

4

2 回答 2

10

来自MSDN

MethodImplOptions.InternalCall:指定内部调用。内部调用是对在公共语言运行时本身内实现的方法的调用。

所以基本上,CLR 提供了它自己的这个方法的实现(可能在本机代码中),这就是为什么你在反汇编器中看不到它的原因。

于 2009-06-18T09:35:44.097 回答
6

在这里回答:

(...) MethodImplOptions.InternalCall与 extern 一起使用来告诉运行时该方法是在系统本身内部实现的。这是为许多核心 .NET Framework 方法完成的,这些方法通过在非托管代码中实现更好。例如, 、 和 Math 类上的许多方法StringGC标记为 InternalCall。正如您所注意到的, Guid.CompleteGuid它也是一个 InternalCall.

于 2009-06-18T09:35:30.647 回答