Видимость по умолчанию для классов и членов С# (поля, методы и т.д.)?

Я пытаюсь найти ссылку для видимости по умолчанию для различных аспектов С#. Типы классов, поля, методы, перечисления и т.д.

Может ли кто-то предоставить их список вместе со своей видимостью по умолчанию (т.е. без префиксного модификатора). Спасибо.

Ответ 1

Вся информация, которую вы ищете, находится здесь и здесь (спасибо Рид Копси):

Из первой ссылки:

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

...

Уровень доступа для членов класса и членов структуры, включая вложенные классы и структуры, по умолчанию.

...

интерфейсы по умолчанию для внутреннего доступа.

...

Делегаты ведут себя как классы и структуры. По умолчанию у них есть внутренний доступ, объявленный непосредственно в пространстве имен, и закрытый доступ при вложенных.


Из второй ссылки:

Типы верхнего уровня, которые не вложены в другие типы, могут иметь только внутреннюю или общедоступную доступность. Доступность по умолчанию для этих типов является внутренней.

И для вложенных типов:

Members of    Default member accessibility
----------    ----------------------------
enum          public
class         private
interface     public
struct        private

Ответ 2

По умолчанию модификатор доступа для класса internal. Это означает, что класс доступен в одной и той же сборке. Но если мы хотим, чтобы класс был доступен из других сборок, он должен быть обнародован.

Ответ 3

По умолчанию используется private. Если они не вложены, классы internal.