C#构造函数extern修饰符的用途

sfe*_*982 13 .net c#

C#构造函数extern修饰符的用途是什么?

我知道使用extern METHODS来调用Win32函数,但是CONSTRUCTORS呢?

请举出实际例子.

请注意:

class MyClass
{
    public extern MyClass();
}
Run Code Online (Sandbox Code Playgroud)

Rob*_*Rob 6

我相信extern ctor的一个用途/目的是让构造函数在CLR本身内实现.如果你使用Reflector反汇编mscorlib.dll并查看System.String类型,你会看到:

[MethodImpl(MethodImplOptions.InternalCall)]
public extern String(char[] value);
Run Code Online (Sandbox Code Playgroud)

这基本上告诉我们字符串类的(char [])ctor是外部实现的,作为.net运行时的一部分.


Pre*_*gha 1

这里的C# 规范表明,除了 private、internal、protected 和 public 之外,还可以使用extern,这是标准的外部引用 - 请参阅此处。对我来说,这意味着构造函数稍后会链接到类中。就像 PInvoke 调用一样。我猜想,没有什么可以阻止 c# 编译器实现程序允许链接包含所述外部构造函数的外部 .net .modules。

我无法给出示例,但我怀疑一种方法是在 MC++ 中实现构造函数,或者实际上只是一个简单的 IL .module。