Skip to content

Latest commit

 

History

History
17 lines (10 loc) · 2.57 KB

Metadata.md

File metadata and controls

17 lines (10 loc) · 2.57 KB

Метаданные

Каждый компилятор, предназначенный для CLR, помимо IL, должен создавать метаданные для каждого управляемого модуля.

  • Метаданные - это набор таблиц данных, описывающих то, что определено в модуле, например типы и их члены. В метаданных также есть таблицы, указывающие, на что ссылается управляемый модуль, например на импортируемые типы и их члены.

Фактически метаданные всегда встроены в тот же EXE- или DLL-файл, что и код, так что их нельзя разделить. А поскольку компилятор генерирует метаданные и код одновременно и привязывает их к конечному управляемому модулю, возможность рассинхронизации метаданных и описываемого ими IL-кода исключена.

Применение метаданных:

  • Метаданные устраняют необходимость в заголовочных и библиотечных файлах при компиляции, так как все сведения об упоминаемых типах/членах содержатся в файле с реализующим их IL-кодом. Компиляторы могут читать метаданные прямо из управляемых модулей.
  • Среда Microsoft Visual Studio использует метаданные для облегчения написания кода с помощью функции IntelliSense
  • В процессе верификации кода CLR использует метаданные, чтобы убедиться, что код совершает только «безопасные по отношению к типам» операции
  • Метаданные позволяют сборщику мусора отслеживать жизненный цикл объектов. При помощи метаданных сборщик мусора может определить тип объектов и узнать, какие именно поля в них ссылаются на другие объекты.

Управляемые данные - данные, поддерживающие сборку мусора.