Я хотел бы знать, как компилятор C# и .Net может успешно скомпилировать классы или классы с привязкой по ссылке, связанные с классами, в одной и той же сборке.C# - Как классы саморегуляции или классы круговой ссылки в одной и той же сборке успешно скомпилированы
Рассмотрите следующий код, присутствующий в той же сборке.
class X{ X x; }
class Y{ Z z; }
class Z{ Y y; }
Конечно, этот код успешно компилируется.
Но как? Я хотел бы знать, как компилятор может разрешить классы в этих случаях в первый раз.
Например, когда компилятор встречает класс Y, он еще не знает класс Z. Как он может разрешить дочернее свойство z в классе Y?
Пожалуйста, объясните, что именно происходит в фоновом режиме при компиляции кода. Возможно, некоторые подходящие статьи о том, как компилятор решает классы и типы
Что, в точности, вы считаете препятствием для составления такого кода? –
Ах. Я должен был добавить это в вопрос. –
[Сколько проходов] (https://blogs.msdn.microsoft.com/ericlippert/2010/02/04/how-many-passes/), вероятно, это сообщение, которое вам нужно прочитать, где Эрик Липперт описывает, как C# компилятор работает, что не похоже на компилятор C, который должен иметь всю доступную информацию, когда он делает один проход над исходным файлом. –