关于.net 属性 的思考
属性是很有用的,这个不用怀疑,可以封装私有字段等等一些好处,
但对于这样的代码而言,
public int EmailWorkID
{
get { return _EmailWorkID; }
set { _EmailWorkID = value; }
}
与
public int EmailWorkID;
各位一般会用那种形式?请谈谈看法和理由。
个人倾向第二中,应为简单,第一中get,set都有,而且是简单的的赋值,
除了说 _EmailWorkID字段变化后,外部使用EmailWorkID不会影响外,
没见的有别的好处,请各位发表高见!!
------解决方案--------------------如果就这么负值 我会用第2种
------解决方案--------------------如果只是赋值的话我也会用第2种
------解决方案--------------------第一是为了代码规范 便于调试
------解决方案--------------------这样就破坏了类的封装啊。。
------解决方案--------------------同意楼上的..
------解决方案--------------------还是用属性比较好,效率不会比public成员变量差,但是维护起来方便多了。
很可能一段时间后,你需要给_EmailWorkID指定一个可用范围,或者觉得set属性可以不用public而改成internal。
------解决方案--------------------个人习惯了第一种。虽然基本上没利用过它的好处。
------解决方案--------------------属性与字段的作用各不相同,至于如何取舍完全取决于你的设计!
它们的差别决不是形式上的,也不是性能上的,它们是程序员对于现实世界抽象的结果,
看看 Framework 中类的属性和字段就会明白的!
如果理解不了,只能说明您从未写过一个真正意义上的 Class!
------解决方案--------------------看看efftive c# 第一条原则,CSDN有
------解决方案--------------------Efftive C#倡议用第一种
------解决方案--------------------属性你可以设置关系啊。比如
public int Total
{
set
{
if(value > 0)
_total=...
else
...
}
}字段不行
------解决方案--------------------属性是特殊的访问器。访问器的作用除了封装类成员,还可以做一些逻辑,比如判断文件是否存在。典型的例子是:人的年龄必须大于0, 如果不通过属性封装,那么只有写Get,Set函数来保证年龄不会被赋予负数。
------解决方案--------------------用公共方法
不能用公共变量
------解决方案--------------------公共变量可以用,但是不提倡用,因为破坏了封装性.
就象james_hunter(辉)所说的:属性是特殊的访问器。访问器的作用除了封装类成员,还可以做一些逻辑.
------解决方案--------------------肯定是第一种,直接用公共字段可维护性太差了。