Видимость по умолчанию для классов и членов C# (поля, методы и т. Д.)?
Я пытаюсь найти ссылку на видимость по умолчанию различных аспектов C#. Типы классов, поля, методы, перечисления и т. Д.
Может ли кто-нибудь предоставить их список вместе с видимостью по умолчанию (т.е. без префиксного модификатора)?
4 ответа
Всю информацию, которую вы ищете, можно найти здесь и здесь (спасибо Reed Copsey):
С первой ссылки:
Классы и структуры, которые объявляются непосредственно в пространстве имен (другими словами, которые не вложены в другие классы или структуры), могут быть открытыми или внутренними. Внутренний является значением по умолчанию, если не указан модификатор доступа.
...
Уровень доступа для членов класса и членов структуры, включая вложенные классы и структуры, по умолчанию является закрытым.
...
по умолчанию интерфейсы для внутреннего доступа.
...
Делегаты ведут себя как классы и структуры. По умолчанию они имеют внутренний доступ при объявлении непосредственно в пространстве имен и закрытый доступ при вложении.
Со второй ссылки:
Типы верхнего уровня, которые не вложены в другие типы, могут иметь только внутреннюю или общедоступную доступность. Доступность по умолчанию для этих типов является внутренней.
И для вложенных типов:
Члены группы Доступность по умолчанию ---------- ---------------------------- enum public частный класс общедоступный интерфейс структура частная
Из MSDN:
Типы верхнего уровня, которые не вложены в другие типы, могут иметь только internal
или же public
доступность. Доступность по умолчанию для этих типов internal
,
Вложенные типы, которые являются членами других типов, могут иметь объявленные возможности доступа, как указано в следующей таблице.
Источник: Уровни доступности (C# Reference)(6 декабря 2017 г.)
По умолчанию модификатор доступа для класса internal
, Это означает, что класс доступен в одной сборке. Но если мы хотим, чтобы к классу обращались из других сборок, то он должен быть обнародован.
По умолчанию private
, Если они не вложенные, классы internal
,