[.net基础]访问修饰符

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

一、前言

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

二、正文

1、方法访问修饰符Internal

  (1)、创建工程ParentAndSon

  (2)、添加类ModelA

namespace ParentAndSon
{
    public class ModelA
    {
        internal void TestInternal()
        {
        }

        protected void TestProtected()
        {
        }

        protected internal void TestProtectedInternal()
        {
        }
    }
}
View Code

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

namespace ParentAndSon
{
    public class MainIn
    {
        public static void Main(string[] arg)
        {
            ModelA a = new ModelA();
            a.TestInternal();
            //a.TestProtected();
            a.TestProtectedInternal();
        }
    }
}
View Code

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

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

namespace SomeNameSpace
{
    public class InvokeModelA
    {
        public InvokeModelA()
        {
            ModelA a = new ModelA();
            a.TestInternal();
            //a.TestProtected();
            a.TestProtectedInternal();
        }
    }
}
View Code

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

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

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

namespace TestParentAndSon
{
    class Program
    {
        static void Main(string[] args)
        {
            ModelA a = new ModelA();
            //a.TestInternal();
            //a.TestProtected();
            //a.TestProtectedInternal();
        }
    }
}
View Code

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

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

namespace ParentAndSon
{
    public class TestA
    {
        public TestA()
        {
            ModelA a = new ModelA();
            //a.TestInternal();
            //a.TestProtected();
            //a.TestProtectedInternal();
        }
    }
}
View Code

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

namespace TestParentAndSon
{
    public class Son : ModelA
    {
        public Son()
        {
            //this.TestInternal();
            this.TestProtected();
            this.TestProtectedInternal();
        }
    }
}
View Code

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

总结:

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

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

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

[.net基础]访问修饰符,古老的榕树,5-wow.com

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。