В еще один вопрос, который я задал, появился комментарий, указывающий, что метод .NET framework Array.Copy
использует неуправляемый код. Я пошел копаться с Reflector и обнаружил, что подпись одной из перегрузок метода Array.Copy
определяется так:
[MethodImpl(MethodImplOptions.InternalCall), ReliabilityContract(Consistency.MayCorruptInstance, Cer.MayFail)]
internal static extern void Copy(Array sourceArray, int sourceIndex, Array destinationArray, int destinationIndex, int length, bool reliable);
Посмотрев на это, я немного смущен. Источником моей путаницы является модификатор extern
, который означает (MSDN):
Модификатор extern используется для объявления метод, который реализуется извне.
Однако объявление метода также украшено атрибутом MethodImplOptions.InternalCall
, который указывает (MSDN):
Задает внутренний вызов. внутренний вызов - это вызов метода который реализуется в рамках общей язык выполнения.
Может ли кто-нибудь объяснить это кажущееся очевидное противоречие?