• c#访问修饰符


    声明的可访问性

    含义

    public

    访问不受限制。

    protected

    访问仅限于包含类或从包含类派生的类型。

    internal

    访问仅限于当前程序集。

    protected internal

    访问仅限于从包含类派生的当前程序集或类型。

    private

    访问仅限于包含类型。

     以下是例子程序,根据例子实验可以笔记深入的了解访问修饰符的含义:

    同一程序集(同一个工程下):

     public class BaseCls
        {
            private int private_a = 0;
            protected int protected_b = 1;
            internal int internal_c = 2;
            protected internal int pi_d = 3;
            public int public_e = 4;
            private int get_private()
            {
                return 5;
            }
            protected int get_protected()
            {
                return 6;
            }
            internal int get_internal()
            {
                return 7;
            }
            protected internal int get_pi()
            {
                return 8;
            }
            public int get_public()
            {
                return 9;
            }       
        }
        public class inheritCls : BaseCls
        {
            public inheritCls()
            {
                Console.WriteLine("同一程序集中继承类访问权限测试");
                Console.WriteLine("private,intenal字段不被继承,protected,protected intenal,public被继承");
                Console.WriteLine(this.protected_b);
                Console.WriteLine(this.pi_d);
                Console.WriteLine(this.public_e);
                Console.WriteLine("private方法不被继承,protected,internal,protected intenal,public被继承");
                Console.WriteLine(this.get_protected());
                Console.WriteLine(this.get_internal());
                Console.WriteLine(this.get_pi());
                Console.WriteLine(this.get_public());
            }
        }
        public class Test
        {
            public Test()
            {
                Console.WriteLine("同一程序集中类的访问权限测试");
                BaseCls baseCls = new BaseCls();
                Console.WriteLine(baseCls.pi_d);
                Console.WriteLine(baseCls.public_e);
                Console.WriteLine(baseCls.get_internal());
                Console.WriteLine(baseCls.get_pi());
                Console.WriteLine(baseCls.get_public());
                inheritCls cls = new inheritCls();
                Console.WriteLine(cls.pi_d);
                Console.WriteLine(cls.public_e);
                Console.WriteLine(cls.get_internal());
                Console.WriteLine(cls.get_pi());
                Console.WriteLine(cls.get_public());
            }
        }


    再新建一个工程:

    class ClassTT : BaseCls
        {
            public ClassTT()
            {
                Console.WriteLine("不同一程序集中继承类访问权限测试");
                Console.WriteLine("private,intenal字段不被继承,protected,protected intenal,public被继承");
                Console.WriteLine(this.protected_b);
                Console.WriteLine(this.pi_d);
                Console.WriteLine(this.public_e);
                Console.WriteLine("private,intenal方法不被继承,protected,internal,protected intenal,public被继承");
                Console.WriteLine(this.get_protected());
                Console.WriteLine(this.get_pi());
                Console.WriteLine(this.get_public());
            }
        }
    
        public class TestTT
        {
            public TestTT()
            {
                Console.WriteLine("不同程序集中类的访问权限测试");
                BaseCls baseCls = new BaseCls();
                //Console.WriteLine(baseCls.pi_d);
                Console.WriteLine(baseCls.public_e);
                //Console.WriteLine(baseCls.get_internal());
                //Console.WriteLine(baseCls.get_pi());
                //Console.WriteLine(baseCls.get_public());
                inheritCls cls = new inheritCls();
                //Console.WriteLine(cls.pi_d);
                Console.WriteLine(cls.public_e);
                //Console.WriteLine(cls.get_internal());
                //Console.WriteLine(cls.get_pi());
                //Console.WriteLine(cls.get_public());
                ClassTT clsTT = new ClassTT();
                Console.WriteLine(clsTT.public_e);
                Console.WriteLine(clsTT.get_public());
            }
        }
    }


    以上的例子主要说明同一程序集和不同程序集之间的继承和调用时的访问权限。总的来说多动手来理解。

  • 相关阅读:
    eCryptfs文件系统测试
    体验企业级网络管理软件(图片加视频)
    基于Linux2.6内核的加密容器法保护文件方法
    Orion Network Performance Monitor 软件在网络管理中的应用
    两款硬件代理服务器产品之比较
    3Com Network Supervisor与IBM Tivoli NetView两款网管软件操作视频
    成为IBM精英讲师-一分耕耘 一份收获 同时也多了一份责任!
    Hp Open View安装使用视频
    在Fedora 14 alpha 下测试Kvm情况(视频)
    ACM模板——分数类
  • 原文地址:https://www.cnblogs.com/secying/p/2991614.html
Copyright © 2020-2023  润新知