浅谈C#基础之类的访问修饰符

 更新时间:2013年03月24日 12:36:01   作者:  
浅谈C#基础之类的访问修饰符,需要的朋友可以参考一下

1.类中成员的访问修饰符

方位修饰符就是确定该成员能够访问(使用)的区域。C#中常用的有如下修饰符:pubic(公有)、private(私有)、internal(内联)、protected(受保护)。举例说明各个修饰符的限制区域。   

复制代码 代码如下:

class TestClass
    {
        public int a = 0;
        private int b = 0;
        protected int c = 0;

pulic  static  int d=0;
    }    


TestClass类中变量a是公有类型,可以在类外方位,即类实例化后可以使用a;变量b只能在类内访问,即类内部的函数可以使用b;变量c则是TestClass继承类可以使用。
复制代码 代码如下:

    class B
    {
        private void st()
        {
           TestClass tec = new TestClass();
            int aa = tec.a;   //right
            int bb = tec.b;  //wrong
            int cc = tec.c    //wrong
        }

   TestClass 实例化对象tec,tec可以访问a但不能访问b、c。那么什么情况下可以访问b、c呢?
复制代码 代码如下:

    class C:TestClass
    {
        private void st()
        {
           TestClass tec = new TestClass();
            C bo = new C();
            int aa = tec.a;
            int bb = tec.b;//wrong
            int cc = tec.c;//wrong
            int tt = bo.c;
        }
    }

先说c。c是受保护类型,其继承类C可以访问。是类B实例化对象仍然不可以访问。但是B内部可以访问c。如下面所示,类内访问类内无限制。
复制代码 代码如下:

    class TestClass
    {
        public int a = 0;
        private int b = 0;
        protected int c = 0;

pulic  static  int d=0;
        private void os()
        {
            int a1 = a;
            int a2 = b;
            int a3 = c;
        }
    }


B继承之后,c就变为private。也就说B的继承类无法访问c;如下所示,D中无法访问c。
复制代码 代码如下:

    class D : B
    {
        private void st()
        {
            B bo = new B();
            int dd = bo.c;//wrong访问受限制
        }
    }

static修饰符表明该字段或方法是类所有,不是某个具体对象的。TestClass类不同实例化时a、b、c的值不同,但d是相同的。如果说a、b、c相当于每个人在哪个省,那么d表明大家都在中国。
复制代码 代码如下:

    class B:TestClass
    {
        TestClass tec = new TestClass();
        int bb = tec.a;//wrong 错误原因是因为字段的初始值引用了非静态字段
        int cc = TestClass.d;
        private void st()
        {

            B bo = new B();
            int aa = tec.a;
            int tt = bo.c;
        }
    }

小结:

puclic修饰:类内,类外皆可;private:内部;protect:类内即其派生类。

相关文章

  • C#读写配置文件方式(config.ini)入门

    C#读写配置文件方式(config.ini)入门

    这篇文章主要介绍了C#读写配置文件方式(config.ini)入门,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-06-06
  • C#中通过API实现的打印类 实例代码

    C#中通过API实现的打印类 实例代码

    这篇文章介绍了,C#中通过API实现的打印类 实例代码,有需要的朋友可以参考一下
    2013-08-08
  • C#把EXCEL数据转换成DataTable

    C#把EXCEL数据转换成DataTable

    这篇文章介绍了C#把EXCEL数据转换成DataTable的方法,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-04-04
  • C#实现软件开机自动启动的两种常用方法总结

    C#实现软件开机自动启动的两种常用方法总结

    这篇文章主要为大家详细介绍了C#实现软件开机自动启动的两种常用方法,文中的示例代码讲解详细,具有一定的学习价值,感兴趣的小伙伴可以了解一下
    2023-07-07
  • C#结合AForge实现摄像头录像

    C#结合AForge实现摄像头录像

    最近由于兴趣学习了下在C#上使用AForge录制摄像头视频并压缩编码。总体上来说这个第三方.net视觉开发库还是比较稳定的
    2017-09-09
  • Unity3D实现人物移动示例

    Unity3D实现人物移动示例

    这篇文章主要为大家详细介绍了Unity3D实现人物移动示例,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-01-01
  • C# List<T>的用法小结

    C# List<T>的用法小结

    本篇文章主要是对C#中List<T>的用法进行了详细的总结介绍,需要的朋友可以过来参考下,希望对大家有所帮助
    2014-01-01
  • C#读写共享文件夹的方法

    C#读写共享文件夹的方法

    这篇文章主要为大家详细介绍了C#读写共享文件夹的方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-05-05
  • C#操作Byte数组和十六进制进行互转

    C#操作Byte数组和十六进制进行互转

    这篇文章介绍了C#操作Byte数组和十六进制进行互转的的方法,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-05-05
  • 利用C#修改Windows操作系统时间

    利用C#修改Windows操作系统时间

    这篇文章主要介绍了利用C#修改Windows操作系统时间,帮助大家更好的利用c#操作系统,感兴趣的朋友可以了解下
    2020-10-10

最新评论