Что такое спецификатор доступа класса верхнего уровня в коде промежуточного языка? - PullRequest
0 голосов
/ 13 июня 2018

Спецификатор доступа по умолчанию для классов верхнего уровня в c # является внутренним, но когда я наблюдал код IL, он был следующим

.class private auto ansi beforefieldinit n.A
   extends [System.Runtime]System.Object
{
} // end of class n.A

вместо ключевого слова сборки, почему компилятор использует ключевое слово private в приведенном выше коде IL

1 Ответ

0 голосов
/ 13 июня 2018

IL определяет вещи иначе, чем C #;в IL есть видимость и доступность .Подробности этого приведены в II.10.1 и таблице II.10.1.1 ECMA 335. Единственными двумя действительными вариантами для типов верхнего уровня являются public и private - все остальное относится к nested *, то есть типам вТипы.

По сути, он делает это , потому что спецификация требует этого :

Тип, который не вложен в другой тип, должен иметь ровно одну видимость ( private или public ) и не должны иметь доступа.

Не существует такой вещи, как assembly или family для типов верхнего уровня.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...