В чем разница между защищенным спецификатором доступа и внутренней защитой в C #

В чем разница между спецификатором доступа защищена и внутренняя защищена в C #?

6
задан abatishchev 17 August 2010 в 08:16
поделиться

5 ответов

Внутренний можно увидеть внутри сборки.

Защищенный можно увидеть по классам, унаследованным от класса, в котором он определен.

Защищенный внутренний можно увидеть в сборке ИЛИ типы, производные от класса, в котором он определен (включая типы из других сборок).

См .: http://msdn.microsoft.com/en-us/library/ba0a1yw2.aspx

Скопировано со страницы:

public              Access is not restricted.
protected           Access is limited to the containing class or types derived from the containing class.
internal            Access is limited to the current assembly.
protected internal  Access is limited to the current assembly or types derived from the containing class.
private             Access is limited to the containing type.
10
ответ дан 8 December 2019 в 14:38
поделиться

protected означает, что только текущий класс и все классы, производные от него, имеют доступ к члену.

internal означает, что любой класс в текущей сборке имеет доступ к члену.

защищенный внутренний по существу означает защищенный или внутренний ; то есть все классы, производные от текущего класса (в любой сборке), имеют доступ к члену, как и все классы в текущей сборке. Это контрастирует с тем, что ожидают многие разработчики - что protected internal будет означать то же самое, что и protected и internal (это не так).

2
ответ дан 8 December 2019 в 14:38
поделиться
  • internal - Видимая всем, что находится в той же сборке (.dll или .exe).
  • protected - Видима любым подклассам, независимо от того, где они находятся.
  • internal protected - Видимы всем, что находится в той же сборке и любыми подклассами, независимо от того, где они находятся.

То, как Джефф Мэттфилд говорит "internal дополнительно уменьшает эту видимость", делает это неясным. internal и protected - это просто разные видимости. Наличие обоих вместе делает член более видимым. По умолчанию видимость чего-либо, не имеющего явных модификаторов доступа, настолько мала, насколько это возможно. Добавление любых модификаторов доступа всегда увеличивает видимость.

2
ответ дан 8 December 2019 в 14:38
поделиться

внутренняя защита или внутренняя защита , что означает то же самое означает внешнюю защиту (извне текущей сборки) и внутреннюю общедоступную (из той же сборки).

1
ответ дан 8 December 2019 в 14:38
поделиться

внутренняя защита позволяет вам получать доступ к элементам в одной и той же сборке из классов, которые не являются производными от одного и того же объекта, но также предоставляет стандартный защищенный доступ, который вы получаете для доступа к элементам из другой сборки. Это внутреннее | защищенный, а не внутренний и защищенный (хотя CLR допускает последнее, а C # - нет)

0
ответ дан 8 December 2019 в 14:38
поделиться
Другие вопросы по тегам:

Похожие вопросы: