Я пытаюсь найти ссылку на видимость по умолчанию различных аспектов C #. Типы классов, поля, методы, перечисления и т. Д.
Может ли кто-нибудь предоставить их список вместе с видимостью по умолчанию (т.е. без префиксного модификатора)?
Я пытаюсь найти ссылку на видимость по умолчанию различных аспектов C #. Типы классов, поля, методы, перечисления и т. Д.
Может ли кто-нибудь предоставить их список вместе с видимостью по умолчанию (т.е. без префиксного модификатора)?
Ответы:
Всю информацию, которую вы ищете, можно найти здесь и здесь (спасибо Reed Copsey ):
С первой ссылки:
Классы и структуры , которые объявляются непосредственно в пространстве имен (другими словами, которые не вложены в другие классы или структуры), могут быть открытыми или внутренними. Внутренний является значением по умолчанию, если не указан модификатор доступа .
...
Уровень доступа для членов класса и членов структуры , включая вложенные классы и структуры, по умолчанию является закрытым .
...
по умолчанию интерфейсы для внутреннего доступа.
...
Делегаты ведут себя как классы и структуры. По умолчанию они имеют внутренний доступ при объявлении непосредственно в пространстве имен и закрытый доступ при вложении .
Со второй ссылки:
Типы верхнего уровня , которые не вложены в другие типы, могут иметь только внутреннюю или общедоступную доступность. По умолчанию доступность для этих типов является внутренней .
И для вложенных типов:
Члены группы Доступность по умолчанию ---------- ---------------------------- enum public частный класс общедоступный интерфейс структура частная
Public. EnumЧлены также Public. Вероятно, менее запутанно просто использовать явную область видимости в вашем случае, поскольку высоки шансы, что она будет переведена или прочитана разработчиками c # в какой-то момент. К сожалению, генерация кода в vb.net не делает этого за вас.
Из MSDN:
Типы верхнего уровня , которые не вложены в других типах, могут только иметь internalили publicдоступность. По умолчанию доступ для этих типов internal.

Источник: Доступность Уровни (C #) (6 декабря - е , 2017)
По умолчанию модификатором доступа для класса является internal. Это означает, что класс доступен в одной сборке. Но если мы хотим, чтобы к классу обращались из других сборок, он должен быть обнародован.
[assembly:InternalsVisibleTo("Friend1b")]
По умолчанию это private. Если они не вложенные, классы есть internal.
enum members are private by default, so to use them outside the enum we should declare them as public. Не могли бы вы объяснить, почему книга противоречит тому, что вы говорите? Спасибо.