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

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

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

有帮助吗?

解决方案

来自 MSDN

  

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

基本上,CLR提供了自己的方法实现(可能是本机代码),这就是你在反汇编程序中看不到的原因。

其他提示

回答此处

  

(...)   使用 MethodImplOptions.InternalCall   与extern一起告诉   运行该方法的运行时   在系统内部。   这是针对许多核心.NET完成的   框架方法更好   通过实施服务   非托管代码。例如,很多    String GC 上的方法,以及   数学类标记为   的 <代码> InternalCall 即可。正如你所注意到的,    Guid.CompleteGuid 也是一个   的 <代码> InternalCall

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top