public string Name ;
和 private string name_;
public string Name {set;get;}
有啥区别
1.public的成员变量读写不可控,安全性不高,容易被串改;
2.private+set+get和public表现形式一致,但是没有暴露成员变量的地址
而且读写可空,如果想要变量只读,那么就不设置set,如果要变量只写,那么不设置get。
达到读写随心。
希望能够帮到你...
private string name_;
public string name
{
get { return name_; }
set { name_ = value; }
}
读写暂且不说,对象的成员不就是用来赋值和读值的嘛, 安全性是啥意思 , 这个类不是静态的, new出来的对象 ,用封装不是一样读值和赋值嘛
之所以用get和set主要是可以在赋值和取值的时候做一些验证
用public就不符合面向对象的封装特性,外部操作可以随意修改name的值
如果用private修饰name属性,外部类是不能直接访问name的,必须通过提供的get、set方法访问,set方法可以起到验证的作用。
举个例子:
现在有个年龄属性(age),age肯定不能小于1,理论上不能大于100。
如果用public修饰,外部操作可以随意的修改age的值,修改成1000都可以,显然不正确。
现在用private修饰,外部操作不能直接访问age属性,必须同set方法修改age的值,我们可以在set方法中加上判断,如果传入的值在1到100之间,允许赋值,反之不给修改age属性
这样就对age属性起到了保护作用,也体现出封装的优点