Цель модификатора экстерна конструктора C#

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

Я знаю об использовании extern-методов вызвать функции Win32, но что относительно КОНСТРУКТОРОВ?

Дайте практический пример.

Отметьте это:

class MyClass
{
    public extern MyClass();
}
13
задан Ehsan Sajjad 24 June 2015 в 12:57
поделиться

2 ответа

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

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

1
ответ дан 2 December 2019 в 01:49
поделиться

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

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

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

6
ответ дан 2 December 2019 в 01:49
поделиться