受保护的内部在.Net中意味着什么

时间:2010-04-16 06:48:04

标签: c# .net oop

受保护意味着,我们只能在派生类中访问此成员,而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();
    }
}

}

请参阅我能够在非派生类中访问,保护内部...所以它在同一个程序集中作为公共工作...你怎么说。

4 个答案:

答案 0 :(得分:48)

这是令人困惑的。

protected 表示“仅此类和派生类”。

内部表示“只有此程序集中的类”。

受保护的内部表示“受保护或内部”(同一程序集中的任何类,任何派生类 - 即使它在不同的集会中)。

即。 表示“受保护的AND内部”(仅在同一程序集中的派生类)。

答案 1 :(得分:2)

内部意味着只有同一个程序集中的类才能访问该成员

受保护意味着只能通过派生类型(访问超类的子类)访问该成员。

受保护的内部是两者的组合。它只能在同一个程序集中访问,并且只能作为子类访问。

更简单: 'protected internal'表示'protected或internal' - 这意味着它可以在同一个程序集中或通过派生类型访问。

答案 2 :(得分:1)

受保护的内部意味着只有同一程序集中的派生类型和类型才能访问该成员。这很奇怪,但这是一种工会关系。这意味着,任何可以访问标记为内部或受保护的成员的任何东西都可以访问该成员。

答案 3 :(得分:-4)

不是真的。声明语句中的Protected关键字指定只能从同一个类中或从该类派生的类中访问这些元素。因此,您可以从同一个库访问它,但不能从所有类访问它。

并且您无法从任何其他库访问受保护的内部,因为Internal表示只能从同一个程序集访问。