为什么要使用set、get方法?

使用set、get方法是否会修改到私有域中的变量?
如果可以修改为什么还要创建私有域使用set、get方法?

1.隐藏成员
使用get,set时,你可以给成员赋值,但不能重新new它,那会造成成员指向一个新的内存。使用get获取到实例,可以保证成员地址不变。
2.对于只读的变量,你可以只写get,不写set。反过来也可以,只有set方法,不允许get。
3.有时候,值改变时,我们需要调用对应的函数进行处理,此时就可以在set方法里面写调用过程。
4.类似圆的半径、周长和面积,半径会决定周长和面积,因此周长和面积应该是个表达式而非一个真实可以随意改变的变量,此时就应该写个get方法里面放表达式。
同样的,get里面可以放复杂的算式,而暴露给外面的是一个只读属性,这样比调用函数要方便,可读性也强。

举个用到的场景
1、全局参数,链接字符串变量
2、定义个私有变量,在读取只读属性conn时,用于判断私有变量是否有值,无值则读取,有值直接返回

public class GlobalInfo
{
    private string _conn;
    public string conn
    {
        get
        {
            if (string.IsNullOrEmpty(_conn))
            {
                _conn = ""; //通过方法读取配置的值;
            }
            return _conn;
        }
    }
}

一是隐藏组件或类内部的真实成员;
二是用来建立约束,比如,实现“有我没你”这种约束;
三是用来响应属性变化事件,当属性变化时做某事,只要写在set方法里就行。

并不是一定要生成get,set方法,只是平时开发中会有没有使用都会写上,严格意义上说,只有使用的时候加上,那再回到get,set上,它有它的作用的,比如,我想设置一个只读字段,私有了不能读,那怎么办,做一个get方法读,没有set方法不能写,同样做一个只写字段,他又它自己的作用,而在开发中我们创建这个确实是方便,其实有的可以设置成公共变量,但是这样更好,可能一种规范吧

用生活举个通俗的例子哈,好比个人的私人物品:牙刷毛巾,这些物品是不是不希望除了自己以外的人使用哈。这就相当于私有域。但是呢,这些物品时间久了需要更换呀,然后会买新的。也就可以比拟成set。别人想问你买了哪种款式呀,你会告诉别人是某某,并不会直接拿给别人用吧,这就可以比拟成get。
这是一个面向对象编程的思想。控制了作用域的范围,简单说,就是什么样的变量仅让它干什么样的事情

因为你打算用面向对象的方式编程
而set、get方法 是私有数据成员(字段)与外界交互的桥梁