Видимость по умолчанию для классов и членов C # (поля, методы и т. Д.)? - PullRequest
148 голосов
/ 21 сентября 2010

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

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

Ответы [ 4 ]

244 голосов
/ 21 сентября 2010

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

С первогоссылка:

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

...

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

...

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

...

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


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

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

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

Members of    Default member accessibility
----------    ----------------------------
enum          public
class         private
interface     public
struct        private
9 голосов
/ 02 февраля 2018

Из MSDN:

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


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

Default Nested Member Accessibility & Allowed Accessibility Modifiers

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

9 голосов
/ 13 августа 2012

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

0 голосов
/ 21 сентября 2010

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...