受保护意味着,我们只能在派生类中访问此成员,而internal意味着我们可以使用对象访问同一程序集中任何类型的此成员。 因此,我可以将受保护的内部成员视为同一程序集中的公共成员。以及作为不同程序集中的受保护成员。
修改
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();
}
}
}
请参阅我能够在非派生类中访问,保护内部...所以它在同一个程序集中作为公共工作...你怎么说。
答案 0 :(得分:48)
这是令人困惑的。
protected 表示“仅此类和派生类”。
内部表示“只有此程序集中的类”。
受保护的内部表示“受保护或内部”(同一程序集中的任何类,或任何派生类 - 即使它在不同的集会中)。
即。 不表示“受保护的AND内部”(仅在同一程序集中的派生类)。
答案 1 :(得分:2)
内部意味着只有同一个程序集中的类才能访问该成员
受保护意味着只能通过派生类型(访问超类的子类)访问该成员。
受保护的内部是两者的组合。它只能在同一个程序集中访问,并且只能作为子类访问。
更简单: 'protected internal'表示'protected或internal' - 这意味着它可以在同一个程序集中或通过派生类型访问。
答案 2 :(得分:1)
受保护的内部意味着只有同一程序集中的派生类型和类型才能访问该成员。这很奇怪,但这是一种工会关系。这意味着,任何可以访问标记为内部或受保护的成员的任何东西都可以访问该成员。
答案 3 :(得分:-4)