受保护的内部访问说明符的含义在下面的代码中

iJa*_*ade 4 c# asp.net protected access-modifiers

好的,让我从一个例子开始.这是我在另一个程序集中的基类

namespace BL
{
    public class BasicClass
    {
        protected internal void func()
        {
            //Code Logic
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

现在这是我在另一个程序集中的派生类

namespace DL
{
    public class DerivedClass:BasicClass
    {
        private void hello()
        {
            func();
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

我能够调用func()from基类,因此它显示了protected 访问修饰符属性,但访问修饰符属性如何.因为它声明了内部,所以internal允许它访问func()另一个程序集.如果那么为什么调用它protected internal而不是简单protected

Ste*_*nal 5

你可能想给这个一读.

受保护的内部可访问性级别表示受保护的OR内部,而非受保护的AND内部.换句话说,可以从同一程序集中的任何类访问受保护的内部成员,包括派生类.要限制仅对同一程序集中的派生类的可访问性,请将类本身声明为内部,并将其成员声明为protected.