Назначение внешнего модификатора конструктора 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.