CLR如何处理C#中的extern方法调用

5
我想问为什么所有外部方法调用都是静态的?CLR如何处理这些调用?
2个回答

4

Extern方法调用是针对非托管代码的。因此,在托管对象实例上调用它没有意义——在实例方法中,第一个(隐藏的)参数是实例引用,即this。通常,extern方法只涉及简单类型(原始类型、字符串等),而不是对象(除了可能的数组,甚至他们经常先转换为IntPtr)。


2
extern调用通常也必须符合“C风格”的API,而C不知道任何关于对象的信息,因此调用是static的。

我的陈述并非完全正确,因为有一个ThisCall调用约定可以与[DllImport]一起使用,以帮助调用C++方法。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接