Какова Цель модификатора экстерна конструктора C#?
Я знаю об использовании extern-методов вызвать функции Win32, но что относительно КОНСТРУКТОРОВ?
Дайте практический пример.
Отметьте это:
class MyClass
{
public extern MyClass();
}
Спецификация c # здесь указывает, что помимо частного, внутреннего, защищенного и общедоступного, можно использовать extern и что это стандартная внешняя ссылка - см. здесь ]. Для меня это говорит о том, что конструктор позже будет связан с классом. Так же, как и вызовы PInvoke. Я предполагаю, что нет ничего, что могло бы остановить средство реализации компилятора С #, позволяющее связывать внешние .net .modules, содержащие указанные внешние конструкторы.
Я не могу привести пример, но подозреваю, что одним из способов было бы реализовать конструктор на MC ++, или на самом деле просто простой IL .module.
Я считаю, что одно из применений/целей внешнего ctor - это иметь конструктор, реализованный в самой CLR. Если вы разберете mscorlib.dll с помощью Reflector и посмотрите на тип System.String, вы увидите:
[MethodImpl(MethodImplOptions.InternalCall)]
public extern String(char[] value);
Что в основном говорит нам, что (char[]) ctor для класса string реализован извне, как часть .net runtime.