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. 【scala】循环

    1.while循环 Scala的while循环跟其他语言并没有很大差别. var i = 0; while(i<args.length){ println(i); i+=1; } Scala也有 ...

  2. XML的两种解析方式

    JDK提供的XML解析方式分为两种:DOM方式和SAX方式DOM:Document Object Model.需要读取整个XML文档,先需要在内存中构架代表整个DOM树的Document对象,可以进行 ...

  3. poj2446

    题解: 二分图匹配 看看是否能达到目标 代码: #include<cstdio> #include<cstring> #include<algorithm> #in ...

  4. win+D可以最小化所有窗口,显示桌面 win+E可以快速打开我的电脑 这两个对我来说非常常用,要用熟练,节约时间

    win+D可以最小化所有窗口,显示桌面   win+E可以快速打开我的电脑

  5. Agilent RF fundamentals (6) - Real TX/RX and RF model

    LNA:Low-Noise Amplifier PA: Power Amplifier1 VGA: Variable-Gain Amplifier  DC input Bias Volatage, B ...

  6. 随想录(skyeye中的soc仿真)

    [ 声明:版权所有,欢迎转载,请勿用于商业用途. 联系信箱:feixiaoxing @163.com] 想学好soc,再怎么看芯片手册和linux kernel都不为过.但是要学习好kernel,那再 ...

  7. stringstream 用法

    stringstream stringstream 是 C++ 提供的另一个字串型的串流(stream)物件,和之前学过的 iostream.fstream 有类似的操作方式.要使用 stringst ...

  8. PS基础教程[7]如何为照片瘦身

    有没有对自己的身材有所抱怨,有没有想过让自己的照片便得苗条一些,其实只有你想不到的,没有我们做不到的,PS中可以很简单的将我们的身体进行美化瘦身,本次经验我们就来学习一下简单的操作. 方法 1.打卡P ...

  9. java中的修辞

    1.final修辞 final修辞变量分为两种:基本类型(byte,short,int,long,float,double,char,boolean)也是值类型,则一旦初始化,值不能改变:应用类型(S ...

  10. tornado日志管理

    默认数据格式 默认情况下,采用tornado的web框架运行起来之后,任何访问都会直接在控制台输出日志信息,格式如下: [I 160807 09:27:17 web:1971] 200 GET / ( ...