02-25 类成员的访问权限--internal

C#中还有一种可访问性,就是由关键字internal所确定的“内部”访问性;

internal有点像public,外界类也可以直接访问声明为internal的类或类的成员,但这只局限于同一个程序集内部。

可以简单的将程序集理解为一个独立的.DLL或者.EXE 的文件,一个Dll或Exe文件中可以有多个类,如果某个类可被同一程序集中的类访问,但其他程序集中的类不能访问它,则称此类具有internal访问性。

例如某个类库项目可以生成一个独立的程序集(假定程序编译后生成.DLL结尾的文件),其中定义了两个类A和B

 1 namespace _20141212jicheng
 2 {
 3    internal class A
 4     {
 5        internal int InternalI = 0;
 6     }
 7    public class B
 8    {
 9        public void f()
10        {
11            A a = new A();
12            a.InternalI = 100;
13        }
14    }
15 }

由于类B和类A属于同一个程序集,所以,类B中的代码可以创建A的对象,并访问A的声明为internal的成员InternalI.

在这个程序集之外,外界只能创建声明为public的类B的对象,不能创建声明为internal的类A的对象。

internal是C#的默认可访问性,这就是说,如果某个类没有任何可访问性关键字在它前面,则它就是internal的。

比如上面的类A 可以写成:

 class A
    {
       internal int InternalI = 0;
    }

他完全等同于

 internal class A
    {
       internal int InternalI = 0;
    }

【注意】在类中,如果省略成员的可访问性关键字,则默认是private的。

例如:

class A
    {
        int InternalI = 0;//省略private
    }

相当于

 internal class A
    {
       private int InternalI = 0;
    }
原文地址:https://www.cnblogs.com/xiaoqingshe/p/4300297.html