MethodImplAttribute 在 .NET 中如何工作?

发布于 2024-07-25 11:01:22 字数 229 浏览 7 评论 0原文

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

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

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

I was investigating some framework code (the System.AppDomain.GetDynamicDir method) and this was all the assembler showed:

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

What happens when this method is called? I don't mean this specific method, but methods with this attribute in general.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

末蓝 2024-08-01 11:01:22

来自 MSDN

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

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

From MSDN:

MethodImplOptions.InternalCall: Specifies an internal
call. An internal call is a call to a
method that is implemented within the
common language runtime itself.

So basically, the CLR provides its own implementation of this method (which is probably in native code), which is why you can't see it in the disassembler.

指尖凝香 2024-08-01 11:01:22

此处回答

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

Answer here :

(...)
MethodImplOptions.InternalCall is used
in conjunction with extern to tell the
runtime that the method is implemented
internally within the system itself.
This is done for many of the core .NET
Framework methods that are better
served by being implemented in
unmanaged code. For example, many of
the methods on the String, GC, and
Math classes are marked as
InternalCall. As you've noticed,
Guid.CompleteGuid is also an
InternalCall.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文