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

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

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

4 ответа

Решение

Всю информацию, которую вы ищете, можно найти здесь и здесь (спасибо Reed Copsey):

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

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

...

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

...

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

...

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


Со второй ссылки:

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

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

Члены группы Доступность по умолчанию
---------- ----------------------------
enum public
частный класс
общедоступный интерфейс
структура частная

Из MSDN:

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


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

Модификаторы доступности и вложенных элементов по умолчанию

Источник: Уровни доступности (C# Reference)(6 декабря 2017 г.)

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

По умолчанию private, Если они не вложенные, классы internal,

Другие вопросы по тегам