[.net基础]访问修饰符

标题:[.net基础]访问修饰符

一、前言

基础掌握不牢固啊,所以记录下来。

二、正文

1、方法访问修饰符Internal

  (1)、创建工程ParentAndSon

  (2)、添加类ModelA

[.net基础]访问修饰符
[.net基础]访问修饰符
namespace ParentAndSon
{
    public class ModelA
    {
        internal void TestInternal()
        {
        }

        protected void TestProtected()
        {
        }

        protected internal void TestProtectedInternal()
        {
        }
    }
}
View Code
[.net基础]访问修饰符

  (3)、添加测试类MainIn,注意命名空间和ModelA相同

[.net基础]访问修饰符
[.net基础]访问修饰符
namespace ParentAndSon
{
    public class MainIn
    {
        public static void Main(string[] arg)
        {
            ModelA a = new ModelA();
            a.TestInternal();
            //a.TestProtected();
            a.TestProtectedInternal();
        }
    }
}
View Code
[.net基础]访问修饰符

  可看出,只有protected修饰的无法访问,internal和protected internal修饰的方法均可访问。

  (4)、添加测试类InvokeModelA,注意命名空间和ModelA不同

[.net基础]访问修饰符
[.net基础]访问修饰符
namespace SomeNameSpace
{
    public class InvokeModelA
    {
        public InvokeModelA()
        {
            ModelA a = new ModelA();
            a.TestInternal();
            //a.TestProtected();
            a.TestProtectedInternal();
        }
    }
}
View Code
[.net基础]访问修饰符

  可看出,只有protected修饰的无法访问,internal和protected internal修饰的方法均可访问。

  (5)、创建新工程TestParentAndSon,以下操作均在TestParentAndSon项目中。

  (6)、添加测试类Program,注意命名空间和ModelA不同

[.net基础]访问修饰符
[.net基础]访问修饰符
namespace TestParentAndSon
{
    class Program
    {
        static void Main(string[] args)
        {
            ModelA a = new ModelA();
            //a.TestInternal();
            //a.TestProtected();
            //a.TestProtectedInternal();
        }
    }
}
View Code
[.net基础]访问修饰符

  可看出,protected、internal和protected internal修饰的方法均不可访问。

  (7)、添加测试类TestA,注意命名空间和ModelA相同

[.net基础]访问修饰符
[.net基础]访问修饰符
namespace ParentAndSon
{
    public class TestA
    {
        public TestA()
        {
            ModelA a = new ModelA();
            //a.TestInternal();
            //a.TestProtected();
            //a.TestProtectedInternal();
        }
    }
}
View Code
[.net基础]访问修饰符

  可看出,protected、internal和protected internal修饰的方法均不可访问。
  (8)、添加子类Son

[.net基础]访问修饰符
[.net基础]访问修饰符
namespace TestParentAndSon
{
    public class Son : ModelA
    {
        public Son()
        {
            //this.TestInternal();
            this.TestProtected();
            this.TestProtectedInternal();
        }
    }
}
View Code
[.net基础]访问修饰符

  可看出,internal修饰的方法不可访问,而protected和protected internal修饰的方法可以访问。

总结:

  internal修饰符是针对同一程序集的,如果是同一程序集,则可以访问,否则不可访问。

  protected是针对子类的,不管是否位于同一个程序集。

  protected internal是把两者的优点集合到一起了,范围比两者任何一个都大。

[.net基础]访问修饰符,布布扣,bubuko.com

[.net基础]访问修饰符

上一篇:polaris: 一个用go实现的支持restful的web框架


下一篇:**汇总CodeIgniter(CI)的数据库操作函数