Назначение внешнего редактора конструктора С#
В чем заключается назначение модификатора extern-конструктора С#?
Я знаю об использовании extern METHODS для вызова функций Win32, но как насчет CONSTRUCTORS?
Просьба привести практический пример.
Обратите внимание:
class MyClass
{
public extern MyClass();
}
Ответы
Ответ 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-модуль.