最近看了一些关于get、set方法的文章,然后自己也做个笔记,方便以后理解

下面我们就举例说明一下get 、set最简明的写法:

public string Str_1
   {
        get;
        set;       
   }

get即是外界可以得到Str_1的这个值,set:即是外界可以修改Str_1的这个值,那么就有人问了:“我写get,set方法跟我直接写public的字段功能一样,为什么要设置get set方法呢?”
好,那我就简单说明一下问什么,为了后期的修改及维护及提高代码的安全性。
有时候你会发现写着代码写着代码你会发现这个“Str_1”的这个值我直接给它一个初始值就好了,也不用修改它,但是你又怕你那上千行的代码有修改“Str_1”的值(总不能再去检查一遍代码吧,这样既浪费时间又会耽误工作),这个时候如果你有写get,set方法那么就简单了你可以这样:

public string Str_1
    {
        get
        {
            return "小明";
        }
    }

直接把set去掉然后设置一个初始值变成只读的,也不用担心你的代码会有修改到它了。是不是这样写后期修改起来特别方便快捷呢。

好,我们再说一下另一种用法如下:

public string Str_2
   {
        get;
        private set;
   }

我们在set前面加了一个 private, private什么意思,是私有的,不公开的。这样写什么意思呢,就是说:我们可以从别的类获取到Str_2的这个值,但是想要修改这个值得话只能从本类修改,这样一说是不是提高了代码的安全性,再也不用担心别的类会乱动到这个值了。

好,我们再说一下另一种用法,我先把代码扔上去:

private string str_3;
    public string Str_3 {
        get
        {
            return str_3;   
        }
        set
        {
            str_3 = value == "小狗变成了一条腿" ? "一条腿的小狗" : value;
            Str_3_Name();
        }
    }
    void Str_3_Name()
    {
       switch (str_3)
       {
           case "一条腿的小狗":
               Debug.Log("一条腿的小狗,好可怜");
               break;
           case "二条腿的小狗":
               Debug.Log("二条腿的小狗,好可怜");
               break;
           case "三条腿的小狗":
               Debug.Log("三条腿的小狗,好可怜");
               break;
            case "四条腿的小狗":
                Debug.Log("四条腿的小狗,好可爱");
                break;
            default:
                Debug.Log("小狗小狗,汪汪汪");
                break;
       }
    }

这样想要修改str_3的值,我们可以直接修改Str_3这样我们可以在“Str_3”set语句块中做一些操作,也可以做一些逻辑判断,如上述举例:我们可以直接修改str_3的值,但是看一下我们从Str_3里面修改的话可控性是不是会更好呢,每当我们从Str_3进行修改str_3值得时候都会经过Str_3的set语句块,然后我们可以在set语句块中做一些判断进而去准确修改str_3的值,并且每次修改值时都会调用“Str_3_Name()”方法(当然我们可以做一些别的操作,可以起到实时监控数据刷新的作用进而做一些别的操作),对了,
这里需要说一下value的类型在这里即代表string类型,上面声明的什么类型即是什么类型