Видимость по умолчанию для классов и членов С# (поля, методы и т.д.)?
Я пытаюсь найти ссылку для видимости по умолчанию для различных аспектов С#. Типы классов, поля, методы, перечисления и т.д.
Может ли кто-то предоставить их список вместе со своей видимостью по умолчанию (т.е. без префиксного модификатора). Спасибо.
Ответ 1
Вся информация, которую вы ищете, находится здесь и здесь (спасибо Рид Копси):
Из первой ссылки:
Классы и структуры, объявленные непосредственно в пространстве имен (другими словами, которые не вложены в другие классы или структуры) могут быть как общедоступными, так и внутренними. Внутренний - это значение по умолчанию, если не указан модификатор доступа.
...
Уровень доступа для членов класса и членов структуры, включая вложенные классы и структуры, по умолчанию.
...
интерфейсы по умолчанию для внутреннего доступа.
...
Делегаты ведут себя как классы и структуры. По умолчанию у них есть внутренний доступ, объявленный непосредственно в пространстве имен, и закрытый доступ при вложенных.
Из второй ссылки:
Типы верхнего уровня, которые не вложены в другие типы, могут иметь только внутреннюю или общедоступную доступность. Доступность по умолчанию для этих типов является внутренней.
И для вложенных типов:
Members of Default member accessibility
---------- ----------------------------
enum public
class private
interface public
struct private
Ответ 2
По умолчанию модификатор доступа для класса internal. Это означает, что класс доступен в одной и той же сборке. Но если мы хотим, чтобы класс был доступен из других сборок, он должен быть обнародован.
Ответ 3
По умолчанию используется private. Если они не вложены, классы internal.