Где ссылка создается из кода ⇒ IL или IL ⇒ нативный код

Я изо всех сил пытаюсь найти, где будет создана ссылка для объекта и на какой стадии он будет создан: от программы к промежуточному коду или от промежуточного кода к собственному коду .

Всего 2 ответа


Эта статья может помочь :

Как правило, приложения, предназначенные для .NET Framework, компилируются в промежуточный язык (IL). Во время выполнения JIT-компилятор преобразует IL в собственный код. Напротив, .NET Native компилирует приложения Windows непосредственно в собственный код.

Итак, как вы видите, IL даже не является обязательным условием, его можно полностью опустить (хотя в большинстве случаев это не следует делать)

Как упомянуто в руководстве CLR :

Среда выполнения автоматически обрабатывает макет объекта и управляет ссылками на объекты, освобождая их, когда они больше не используются. Объекты, время жизни которых управляется таким образом, называются управляемыми данными. Сборка мусора устраняет утечки памяти, а также некоторые другие распространенные ошибки программирования.

Так как перед выполнением исполняемый код превращается в собственный код и объекты создаются, я думаю, что он отвечает на ваш вопрос.


Объекты на самом деле создаются во время выполнения, ваш код - это всего лишь инструкции для его создания, ваш код будет скомпилирован в IL при его компиляции.

Тогда среда выполнения ( JIT-компилятор ) будет интерпретировать этот код в нативный код, в любом случае, на самом деле это не создает ваши объекты. объекты и ссылки на него будут созданы только тогда, когда процессор выполнит интерпретированный код и сохранит некоторое значение в памяти.


Есть идеи?

10000