Я думал, что это невозможно, но каким-то образом вы МОЖЕТЕ добавить модификатор к enum
, отличному от public
.
Этот код прекрасно работает и действует как действительный закрытый член (недоступен вне класса C
:
Краткий ответ: минимально возможный доступ (см. Ответ Джона Скита).
Длинный ответ:
Не вложенные типы, перечисления и делегированные права доступа ( может иметь только внутреннюю или общедоступную доступность )
| Default | Permitted declared accessibilities
------------------------------------------------------------------
namespace | public | none (always implicitly public)
enum | public | none (always implicitly public)
interface | internal | public, internal
class | internal | public, internal
struct | internal | public, internal
delegate | internal | public, internal
Вложенный тип и членские права доступа
| Default | Permitted declared accessibilities
------------------------------------------------------------------
namespace | public | none (always implicitly public)
enum | public | none (always implicitly public)
interface | public | none
class | private | All¹
struct | private | public, internal, private²
delegate | private | All¹
constructor | private | All¹
interface member | public | none (always implicitly public)
method | private | All¹
field | private | All¹
user-defined operator| none | public (must be declared public)
¹ Все === общедоступный, защищенный, внутренний, закрытый, защищенный внутренний
² структуры не могут наследоваться от структур или классов (хотя они могут, интерфейсы), следовательно, защищенный не является допустимым модификатором
Доступность вложенного типа зависит от его доступности.
домен, который определяется как заявленной доступностью
член и домен доступности сразу содержащих
тип. Тем не менее, домен доступности вложенного типа не может превышать
что содержащего типа.
Примечание: CIL также имеет положение для защищенного и внутреннего (как
в отличие от существующего защищенного "или" внутреннего), но, насколько мне известно
это в настоящее время недоступно для использования в C #.
См:
http://msdn.microsoft.com/en-us/library/ba0a1yw2.aspx
http://msdn.microsoft.com/en-us/library/ms173121.aspx
http://msdn.microsoft.com/en-us/library/cx03xt0t.aspx (Человек, которого я люблю
URI Microsoft ...)