Подтвердить что ты не робот

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

В чем заключается назначение модификатора extern-конструктора С#?

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

Просьба привести практический пример.

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

class MyClass
{
    public extern MyClass();
}
4b9b3361

Ответ 1

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

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

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

Ответ 2

В С# spec здесь указано, что помимо частного, внутреннего, защищенного и открытого, extern можно использовать и что это стандартная внешняя ссылка - см. здесь. Это для меня говорит, что контрструктор связан позже с классом. Также как и звонки PInvoke. Ничего, я предполагаю, останавливая реализацию компилятора С#, позволяющего связывать внешние .net-модули с указанными внешними конструкторами.

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