2010-11-21 2 views
6

Я собираюсь через некоторое C# учебник, который гласит следующее:.Создание объекта в # вопрос C

«После того, как он находит класс атрибутов, компилятор проверяет, является ли атрибут разрешенных в классе Тогда он будет проверять для конструктора, который соответствует параметрам, указанным в использовании атрибута. Если он находит один, он создает экземпляр объекта, вызывая конструктор с указанными значениями «

Название этого параграфа является« процессом компиляции »и он ссылается на способ обработки атрибутов компилятором. Прошу прощения за незнание, но не нужно создавать экземпляры во время выполнения?

Спасибо.

+2

Поиск этой цитаты возвращает ровно 1 результат: этот вопрос. Откуда вы его взяли? – dtb

+0

Похоже, что компилятор здесь используется как синоним «код, создаваемый компилятором». – Hogan

ответ

3

Атрибуты определяют метаданные для классов - каждый экземпляр класса (т. Е. Объект) будет использовать одни и те же значения атрибутов. Эти метаданные хранятся вместе с определением типа, которое вычисляется один раз во время компиляции из исходных файлов.

1

Существует процесс «компиляции», который генерирует промежуточный код, который интерпретируется с использованием .NET framework.

Именно поэтому они говорят о процессе компиляции.

2

Поскольку есть атрибуты, которые также affect the compiler, я не удивлюсь, если компилятор сделал, создав их при компиляции. И что?

+0

Я не знал, что компилятор создает объекты. – user429400

+1

Звучит маловероятно. Я сомневаюсь, что компилятор создает атрибуты (т. Е. Вызывает конструктор определяемого пользователем атрибута). – CodesInChaos

+0

как бы компилятор создавал экземпляр объекта? – miguel

0

Компилятор создает только метаданные, которые описывают конструкцию атрибута и присваивания его свойствам. Атрибут сам создается только при использовании отражения для атрибутов списка. Я думаю, что каждый призыв к размышлению создает новый экземпляр этого атрибута.

И я думаю, что есть способ (связанный только с контекстами отражения), чтобы проверить атрибут непосредственно из мета, не создавая его вообще.

Смежные вопросы