Назначение внешнего модификатора конструктора C#

Какова цель модификатора extern конструктора C#?

Я знаю об использовании extern METHODS для вызова функций Win32, но как насчет CONSTRUCTORS?

Пожалуйста, приведите практический пример.

Обратите внимание:

class MyClass
{
    public extern MyClass();
}

2 ответа

Я полагаю, что одно использование / цель внешнего ctor - реализовать конструктор внутри самого CLR. если вы разберете mscorlib.dll с помощью Reflector и посмотрите на тип System.String, вы увидите:

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

Что в основном говорит нам о том, что (char[]) ctor для строкового класса реализован извне, как часть среды выполнения.net.

Спецификация C# здесь указывает на то, что кроме private, internal, protected и public, extern может использоваться и что это стандартная внешняя ссылка - см. Здесь. Для меня это говорит о том, что contstructor связан с классом позднее. Так же, как звонки PInvoke. Я полагаю, что нет ничего, что могло бы остановить реализацию компилятора C#, позволяющую связывать внешние.net.modules, содержащие указанные внешние конструкторы.

Я не могу привести пример, но я подозреваю, что одним из способов было бы реализовать конструктор в MC++ или просто простой IL .module.

Другие вопросы по тегам