Как компиляция C # обходится без заголовочных файлов?
Я провел свою профессиональную жизнь как разработчик C #. Будучи студентом, я иногда использовал C, но не изучал глубоко его модель компиляции. Недавно я вскочил на подножку и начал изучать Objective-C. Мои первые шаги только заставили меня осознать дыры в моих ранее существующих знаниях.
Из моего исследования, компиляция C / C ++ / ObjC требует, чтобы все встречающиеся символы были предварительно объявлены. Я также понимаю, что строительство - это двухэтапный процесс. Сначала вы компилируете каждый отдельный исходный файл в отдельные объектные файлы. Эти объектные файлы могут иметь неопределенные «символы» (которые обычно соответствуют идентификаторам, объявленным в заголовочных файлах). Во-вторых, вы связываете объектные файлы вместе, чтобы сформировать окончательный результат. Это довольно высокоуровневое объяснение, но оно удовлетворяет мое любопытство. Но я также хотел бы иметь подобное понимание высокого уровня процесса сборки C #.
Q: Как процесс сборки C # позволяет обойтись без заголовочных файлов? Я полагаю, возможно, шаг компиляции делает два прохода?
(Изменить: ответьте на вопрос здесьКак C / C ++ / Objective-C сравнивается с C #, когда дело доходит до использования библиотек?)