Что означает защищенный внутренний в .Net
Защищенные средства, мы можем получить доступ к этому члену только в классе-выводе, а внутренние средства мы можем получить доступ к этому члену в любом типе в той же сборке, используя объект.
Поэтому я могу рассмотреть элемент Защищенный внутренний как открытый член в той же сборке. и как защищенный член в другой сборке.
EDIT:
namespace pracConsole
{
class Class1
{
protected internal int val;
public int hello()
{
Console.WriteLine("This is method pracConsole.hello");
Console.ReadLine();
return 1;
}
}
class program
{
static void Main(string[] args)
{
Class1 _class1 = new Class1();
_class1.val = 3;
_class1.hello();
Console.ReadLine();
}
}
}
См., что я могу получить доступ, защищенный внутренним в классе, не являющемся производным... так что он работает как открытый в той же сборке.. что вы говорите.
Ответы
Ответ 1
Это путаница.
protected означает "только этот класс и производные классы".
внутренний означает "только классы в этой сборке".
защищенный внутренний означает защищенный ИЛИ внутренний "(любой класс в той же сборке или любой производный класс, даже если он находится в другой сборке). p >
то есть. он не означает "protected AND internal" (только производные классы внутри одной сборки).
Ответ 2
Внутренний означает, что только классы внутри одной сборки могут получить доступ к этому члену
Защищенный означает, что к члену может быть доступ только тип вывода (дочерний класс, доступ к суперклассу).
Защищенный внутренний - это комбинация обоих из них. Доступ к нему можно получить только в одной сборке, и к нему можно получить доступ только как дочерний класс.
Проще говоря:
"protected internal" означает "защищенный или внутренний" - это означает, что к нему можно получить доступ в пределах одной сборки или с помощью типа вывода.
Ответ 3
Защищенный внутренний означает, что только производные типы и типы в одной и той же сборке могут получить доступ к элементу. Это странно, но это союзные отношения. Смысл, к члену можно обращаться все, что может получить доступ к элементам, помеченным как внутреннее ИЛИ защищено.
Ответ 4
Не совсем. Ключевое слово Protected в объявлении объявляет, что к элементам можно получить доступ только из одного класса или из класса, полученного из этого класса. Таким образом, вы можете получить к нему доступ из одной и той же библиотеки, но не из всех классов.
И вы не можете получить доступ к Protected Internal из любой другой библиотеки, потому что Internal означает доступ только с той же сборки.