zoukankan      html  css  js  c++  java
  • 类成员的访问类型

    类成员的访问类型(又称访问修饰符)
    应该有四种,但我能理解的先只有两种:public与private。
    private定义的成员在外部无法访问到,如果外部强行访问,编译器告错,示例代码如
    下:

     1using System;
     2
     3class m
     4{
     5 static void Main()
     6 {
     7  point p=new point();
     8  Console.WriteLine("x=" + p.x.ToString());
     9 }

    10}

    11
    12class point
    13{
    14 private double x=10;
    15}

    16

    编译时出错提示如下:
    p.cs(8,30): error CS0122: “point.x”不可访问,因为它受保护级别限制
    p.cs(14,17): (与前一个错误相关的符号位置)
    如果第14行改为public就不会出错了。

    默认是什么?
    当我把14行的private去掉,只写double x=10;,编译结果与private一样,由此可以
    感觉出默认情况下是private的。

    在VB6的控件编程中,我也是把控件的属性存在私有变量中,而用Let(或Set)与Get这两个特殊子程序来与外界沟通。如果把它移到C#中,Let与Get变为set与get。代码则写成如下:

    //前面相同,省略
    class point
    {
     
    double m_x=10;
     
    public double x
     
    {
      
    get return m_x; }
      
    set { m_x = value; }
     }

    }

    这样就没问题了,其中我自己设定私有变量全部用m_为开头。VB中Let是有带参数的,C#中却把参数都省了,将要设的值就是value,任何类型都用value来代替,统一,我喜欢。但与VB的代码对比一下,却发现VB的Let有时还可以多带一个索引,C#中索引如何表达?

    另外,我还在IDE环境中试一了下,如果类型为枚举值,在set中使用value能不能智能
    感知出其取值的可能性。结果是可以的,IDE中value的类型与x的类型保持一致。

    //前面相同,省略
    class point
    {
     
    enum POS_X
     
    {
      P_LOW 
    = 10,
      P_MID 
    = 20,
      P_HIG 
    = 30
     }
    ;

     POS_X m_x
    =10;
     
    public POS_X x
     
    {
      
    get return m_x; }
      
    set { m_x = value + POS_X.P_LOW; }
     }

    }

    当你输入到“set { m_x = value +”时,IDE自动弹出POS_X及相应内容。

  • 相关阅读:
    免费音频录制及处理软件 Audacity
    centos7设置程序开机启动方案
    tomcat开启前或者关闭前执行清理任务 servlet基础知识解决
    BigDecimal比较大小及判0处理
    File文件夹操作创建层级文件夹
    centos7设置activemq开机启动
    tomcat关闭时无法清理资源解决方案
    java数据类型和C++的对应关系 SDK开发
    centos7查询开机启动项及设置服务为开机自启动
    Entity Framework 教程
  • 原文地址:https://www.cnblogs.com/yzx99/p/1206740.html
Copyright © 2011-2022 走看看