Что происходит на уровне компилятора и во время выполнения программы, когда в C# вызывается метод, например Add(3, 4)?
При вызове метода компилятор находит его по имени и сигнатуре, а во время выполнения CLR передаёт управление по адресу метода, выполняет его код и возвращает результат. Если метод не найден, выбрасывается исключение.
При компиляции компилятор ищет метод с подходящим именем и сигнатурой (количеством и типами параметров) в текущей или подключённых сборках. Если метод найден и доступен из текущего контекста (учитываются модификаторы доступа), в скомпилированный код вставляется вызов по адресу метода.
Во время выполнения CLR передаёт управление по этому адресу, выполняет код метода, а затем возвращает управление в вызывающий код. Если метод возвращает значение, оно передаётся обратно вызывающей стороне.
Если метод с такой сигнатурой не найден, при выполнении будет выброшено исключение MissingMethodException или MethodNotFoundException.
Отметьте свой прогресс