Я пытаюсь найти ссылку на видимость по умолчанию различных аспектов 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
. Не могли бы вы объяснить, почему книга противоречит тому, что вы говорите? Спасибо.