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

时间:2010-03-05 09:15:32

标签: c# .net

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

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

请举出实际例子。

请注意:

class MyClass
{
    public extern MyClass();
}

2 个答案:

答案 0 :(得分:6)

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

[MethodImpl(MethodImplOptions.InternalCall)]
public extern String(char[] value);

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

答案 1 :(得分:1)

c#规范here表示除了私有,内部,受保护和公开之外,可以使用 extern ,这是标准的外部参考 - 请参阅here。这对我说,contstructor稍后会链接到类中。就像PInvoke调用一样。我猜,没有什么可以阻止c#编译器实现者允许链接包含所述外部构造函数的外部.net .modules。

我不能举一个例子,但我怀疑在MC ++中实现构造函数的方法有点,或者实际上只是一个简单的IL .module。