日期:2014-05-19  浏览次数:20871 次

关于.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(辉)所说的:属性是特殊的访问器。访问器的作用除了封装类成员,还可以做一些逻辑.
------解决方案--------------------
肯定是第一种,直接用公共字段可维护性太差了。