zoukankan      html  css  js  c++  java
  • set,get方法(属性,索引器)

    很多时候我们不可以把一些字段暴露出来允许别人调用和修改,为了隐藏这些字段又便于加限制的使用,在面向对象编程中一般采用写get set函数的办法,比如:

            //字段_age, "_"表示private
            private int _age;
    
            //获取字段值的方法,需要返回这个int类型字段
            public int GetAge()
            {
                return this._age;
            }
    
            //设置字段值的方法,不需要返回值,定义一个int类型的value
            public void SetAge(int value)
            {
                if (value >= 0 && value <= 120)//可以加条件来限制字段的范围
                {
                    this._age = value;
                }
                else
                {
                    throw new Exception ("Age value has error.");
                }
            }
    

    学生的年龄限制在0-120,则可以避免20岁输入成200岁这种错误。

    C#语言单独引入了属性这种概念,用来对字段加以限制,属性是一种语法糖。

            //字段_age, "_"表示private
            private int _age;
    
            public int Age
            {
                //获取字段值的方法
                get
                {
                    return this._age;
                }
    
                //设置字段值的方法,不需要返回值
                set
                {
                    if (value >= 0 && value <= 120)//规定好value是上下文关键字(蓝色)
                    {
                        this._age = value;
                    }
                    else
                    {
                        throw new Exception("Age value has error.");
                    }
                }
            }
    

    只读方法:(不允许往里写,只允许读取的方法。另外只写方法是没有意义的,因此不举例只写方法)

            //字段_age, "_"表示private
            private int _age;
    
            public int Age
            {
                //获取字段值的方法
                get
                {
                    return this._age;
                }
            }
    

    属性快捷键
    propfull 然后按两下tab会出现

            private int myVar;
    
            public int MyProperty
            {
                get { return myVar; }
                set { myVar = value; }
            }
    

    最简单:(这种属性没有任何保护,与一个公有的字段完全一样,很容易被改变值,带有这种属性的类一般是传输数据用的)

            public int Age{get;set;}
    

    索引器:Indexer
    基本语法:

    修饰符 类型名 this [参数列表] //this表示他是个索引器
    {
        get{
        }
        set{
        }
    }
    

    举个例子:

    public string s;
    //可容纳100个整数的整数集  
    private string[] arr = new string[10];
    //声明索引器  
    public string this[int index]//这里定义一个index
    {
        get
        { //检查索引范围  
            if (index < 0 || index >= 10)
            {
                return null;
            }
            else
            {
                return arr[index];
            }
        }
        set
        {
            if (!(index < 0 || index >= 100))
            {
                arr[index] = value;
            }
        }
    }
    
    
  • 相关阅读:
    (一)Java基本数据类型及运算符
    (二)Java控制执行流程
    ArrayList类源码解析——ArrayList动态数组的实现细节(基于JDK8)
    Java的四个标记接口:Serializable、Cloneable、RandomAccess和Remote接口
    Java容器类源码分析之Iterator与ListIterator迭代器(基于JDK8)
    Java容器类源码分析前言之集合框架结构(基于JDK8)
    浅谈虚树
    点分治
    Ze_Min Tree 主席树
    笛卡尔树的妙用
  • 原文地址:https://www.cnblogs.com/maomaodesu/p/11394198.html
Copyright © 2011-2022 走看看