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

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

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

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

 namespace _20141212jicheng
{
internal class A
{
internal int InternalI = ;
}
public class B
{
public void f()
{
A a = new A();
a.InternalI = ;
}
}
}

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

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

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

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

 class A
{
internal int InternalI = ;
}

他完全等同于

 internal class A
{
internal int InternalI = ;
}

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

例如:

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

相当于

 internal class A
{
private int InternalI = ;
}

02-25 类成员的访问权限--internal的更多相关文章

  1. c++学习——类成员的访问权限

    成员的访问权限 Public: 任何人,尤其是那些要使用这个类库的客户程序员,都能访问那个紧跟在public 后面声明的成员. 默认的package: 在同一个目录里面的文件,并且都没有明确指明它是属 ...

  2. Java类和类成员的访问权限修饰符

    一:访问修饰符: 1.省略访问修饰符 具有默认的访问特性,即具有包访问特性,只能被同一个包中的类使用. 2.public访问修饰符 用于说明类和类的成员的访问权限.这种类叫公有类.在一个文件中只能有一 ...

  3. CPP/类/成员函数访问权限2

    // main.cpp // OOL // Created by mac on 2019/4/4. // Copyright © 2019年 mac. All rights reserved. // ...

  4. java类成员的访问权限

    private:这是安全级别最高的访问权限,尽在该类中可以访问到: 默认访问权限:又称包访问权限,顾名思义,仅在该包内可以访问: protected:在包访问权限的基础上,该类的子类也可以访问到: p ...

  5. CPP/类/成员函数访问权限

  6. Java成员的访问权限控制

    Java中的访问权限控制包含两个部分: 类的访问权限控制 类成员的访问权限控制 对类来说,访问权限控制修饰符可以是public或者无修饰符(默认的包访问权限): 对于类成员来说,访问权限控制修饰符可以 ...

  7. C# 成员默认访问权限(public、private、protected、internal)

    C# 成员默认访问权限(public.private.protected.internal) 来源 https://www.cnblogs.com/yezongjie/p/20181121Access ...

  8. Delphi XE中类成员的访问权限(新增了strict private和strict protected,还有automated)

    Delphi XE中类成员的访问权限共提供了6个关键词来用于限定访问权限:public.private.protected.published.automated strict private . s ...

  9. this、static、main方法、静态代码块、final关键字、Runtime类、Cloneable类、类成员的访问控制权限、异常体系

    this表示当前对象,用在方法内部,当某对象调用该方法时,该方法中的this就代表调用该方法的对象: static关键字: 修饰类属性后,该属性就成为该类所有实例的公共属性,修改该属性值,所有的实例的 ...

随机推荐

  1. python---迭代器与生成器(一)

    迭代器与生成器 迭代器 迭代是Python最强大的功能之一,是访问集合元素的一种方式.. 迭代器是一个可以记住遍历的位置的对象. 迭代器对象从集合的第一个元素开始访问,直到所有的元素被访问完结束.迭代 ...

  2. GAN的原理入门

    开发者自述:我是这样学习 GAN 的 from:https://www.leiphone.com/news/201707/1JEkcUZI1leAFq5L.html   Generative Adve ...

  3. “一键”知道自己的IP地址和网络供应商

    打开浏览器,然后在地址栏里面输入“www.baidu.com” 进入百度主页以后,在搜索框内输入 “ip”,然后回车就可以了

  4. 如何限制mongodb数据库内存占用量方法

    多实例下: 可以通过绑定cpu,来防止多实例相互干扰. mongodb的内存也可以限制主,防止全部内存都被一个实例占据. ulimit -s 4096 && ulimit -m 314 ...

  5. BasicExcel的使用

    from:http://www.cnblogs.com/paullam/p/3705924.html   使用的平台:vs2013 控制台 创建时需要注意, 安全开发生命周期(SDL)检查 不能勾选( ...

  6. VC++6.0/MFC 自定义edit 限制输入内容 响应复制粘贴全选剪切的功能

    Ctrl组合键ASCII码 ^Z代表Ctrl+z                     ASCII值 控制字符  ASCII值 控制字符  ASCII值 控制字符  ASCII值 控制字符0(00) ...

  7. 解决 Laravel/Lumen 出现 "Please provide a valid cache path" 问题

    解决 Laravel/Lumen 出现 "Please provide a valid cache path" 问题 解决 Laravel/Lumen 出现 "Pleas ...

  8. MYSQL 级联 添加外键

    MySQL支持外键的存储引擎只有InnoDB,在创建外键的时候,要求父表必须有对应的索引,子表在创建外键的时候也会自动创建对应的索引.在创建索引的时候,可以指定在删除.更新父表时,对子表进行的相应操作 ...

  9. bzoj 4472 salesman

    Written with StackEdit. Description 某售货员小\(T\) 要到若干城镇去推销商品,由于该地区是交通不便的山区,任意两个城镇 之间都只有唯一的可能经过其它城镇的路线. ...

  10. matlab中freqz的用法以及多项式的展开

    对于一个变量a,matlab中定义需要这样 syms a: 定义之后就可以写由变量组成的式子,比如 c=(1+a^-1)^5; 可以用expand(c) 就能把c展开成多项式,每一项的系数就可以看到. ...