internal 访问修饰 程序集

来源:互联网 发布:dota2设置公开数据 编辑:程序博客网 时间:2024/04/29 23:58


1、新建一个类,如果这个类没有任何访问级别限制如public、protected、private、internal修饰。那么这个类默认的访问限制为internal。

2、internal修饰的类:只有本程序集内才能够访问。如:新建一个类库,这里面的类都是用internal 修饰,那么即使其他解决方案引用这个类库,这个类库里的方法、属性都不能够访问。 也就是说用internal修饰的类只有本程序集才能够访问里面的方法或者属性。

3:程序集:在.NET 中,新引入了一个程序集的概念,就是指经由编译器编译得到的,供CLR进一步编译执行的那个中间产物,在WINDOWS系统中,它一般表现为.dll,或者是.exe的格式,但是要注意,它们跟普通意义上的WIN32可执行程序是完全不同的东西,程序集必须依靠CLR才能顺利执行。之所以要编译为程序集然后由.NET FRAMEWORK解析执行,就是为了实现跨平台的功能。并且由CLR解析执行可以针对不同的具体平台生成具体针对性的优化代码,对执行效率也有好处。也可以理解为包含了很多类的集合,比如一个类也可以作为程序集、一个类库也可以作为一个程序集。只要在能够引用的都可以理解为程序集。

 

 

如图:新建一个项目,添加两个类库,一个是get类库,一个是set类库(名称没有特殊含义,只方便区分)。在get类库中添加对set类库的引用

  

在set类库中的Class类中添加一个返回值为string的setClass的方法,并且类修饰符为public:

namespace setClass.类
{
    public class setClass
    {
        public string testFun()
        {
            return "";
        }
    }
}

 

在get类库中的class类中添加set类库的引用  using setClass.类;,并添加调用setClass的testFun()方法

using setClass.类;

namespace getClass.类
{
    public class getClass
    {
        public void getTestFun()
        {

            setClass.类.setClass setclass = new setClass.类.setClass();

            setclass.testFun();
        }
    }
}

这时并没有报错,方法调用正确。

如果我只把以上的代码set类库的类修饰符改为internal

namespace setClass.类
{
    internal class setClass
    {
        public string testFun()
        {
            return "";
        }
    }
}

,这时就会报错,并提示“不可访问,因为它受访问级别限制”。这就是internal的作用,把类的修饰改为internal那么只能是同一个程序集(一个程序集可能包含很多歌类)才能够访问

 

 


 

原创粉丝点击