私有字段加上属性实现其透明,那为什么不直接用public啊
这就是属性和数据成员的区别了,《C#高效编程:改进C#代码的50个行之有效的办法》这本书里第一章讲的就是:使用属性而不是可访问的数据成员,感兴趣的话可以去研究一下。其中有一段在这里截了一个图
属性可以区分读写。
意义不一样.
public的东西不安全,任何地方,任何人都可以修改,读取你public的字段.
但是属性不一样,是提供一个统一接口,外部访问就必须从这里.
而且属性还可以把读和写分开,而public字段不行. 属性里面可以写简单的逻辑,但是public不行.
其它属性就是一组方法,在java里不就是getXXX,setXXX方法吗?
C#里面也是方法 get_XXX ,set_XXX,只是这两方法是编译器帮你做的.你可以试试反编译,或者定义XXX这个属性,再加个get_XXX这个方法看能否编译,会是示你有这个方法了.
定义为public不安全
有时候get和set的时候会有其他的逻辑,例如get的时候发现有了就不再到数据库里去取了(延时加载)
如果你只公布一个public的字段就没法做
单纯的简单读写 实际上 属性和public字段区别不大