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及相应内容。

  • 相关阅读:
    android 中文 api (43) —— Chronometer
    SVN客户端清除密码
    Android 中文 API (35) —— ImageSwitcher
    Android 中文API (46) —— SimpleAdapter
    Android 中文 API (28) —— CheckedTextView
    Android 中文 API (36) —— Toast
    Android 中文 API (29) —— CompoundButton
    android 中文 API (41) —— RatingBar.OnRatingBarChangeListener
    Android 中文 API (30) —— CompoundButton.OnCheckedChangeListener
    Android 中文 API (24) —— MultiAutoCompleteTextView.CommaTokenizer
  • 原文地址:https://www.cnblogs.com/yzx99/p/1206740.html
Copyright © 2011-2022 走看看