C#中InternalCall的用法是什么?

时间:2013-12-27 12:30:00

标签: c# .net clr

我见过一些标有MethodImplOptions.InternalCall

的代码

从文档中可以看出,这种方法是“公共语言运行时本身实现的方法”。

我想知道将方法标记为内部通话的用法是什么?

不能在.NET库本身中实现这样的方法吗?或者作为可以使用标准技术调用的本机方法? (例如:Pinvoke)

另一个问题涉及“为什么不实施与CIL指令相同”:What's the point of MethodImplOptions.InternalCall?

它回答了为什么最好不引入新的CIL指令,但没有完全回答我所追求的内容。

此外,是否可以在非CLR代码中创建内部实现? (例如:托管CLR的本机应用程序?)

1 个答案:

答案 0 :(得分:1)

正如您在 MethodImplAttribute

中使用的 MethodImplOptions.InternalCall 链接中提到的那样
[MethodImpl(MethodImplOptions.InternalCall)]

MethodImpl是所谓的伪属性,这些类型的属性具有特殊处理,并且不作为该类型的元数据的一部分存储,而是用于在元数据表中设置值。具有类似行为的另一个属性是SerializableAttribute。      MethodImplAttribute接收MethodImplOptions作为参数以配置方法实现。 MethodImplOptions.InternalCall通常与与非托管代码关联的代码一起使用。

您可以在此处找到更多信息:

http://msdn.microsoft.com/en-us/magazine/cc163896.aspx