zoukankan      html  css  js  c++  java
  • 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;
        }
  • 相关阅读:
    Springx b 界面
    ETCD 分布式锁实现逻辑
    etcd 集群概述 转
    [转]MySQL性能优化
    Elasticsearch、MongoDB和Hadoop比较
    Mysql导出表格变成科学计数法的解决方案
    记一次laravel框架下的post请求测试
    Mysql语句优化记录
    laravel与MongoDB 的部分实践
    Laravel多数据库连接记录
  • 原文地址:https://www.cnblogs.com/xiaoqingshe/p/4300297.html
Copyright © 2011-2022 走看看