1 //字段 2 private int myNum; 3 //属性 4 public int MyNum 5 { 6 get 7 { 8 return myNum; 9 } 10 set 11 { 12 myNum = value; 13 } 14 }
字段与属性在后面的成员函数中都能参与计算,且由MyNum在类外部赋值,类的内部计算既可以用MyNum又可以用myNum计算(类似于形参),在这里如何区别其各自的作用和地位,类的内部用MyNum计算还是用myNum计算好呢,更合理一些?
用属性,被封装的字段相当于不存在了。
当然,你偏要扣什么效率之类的牛角尖,那就当我没说。
也就是说被封装的字段仅仅只是一个过程量而已?
@ZGHAPPY: 是的,当它被封装后,就不是重点了,不然干嘛封装?不也是有个目的才去给它加上get;set吗,我们还要多打几个字母上去,多累啊
@凹出来: 有道理,谢谢,领教了
private Int32 myNum; public Int32 getMyNum() { return myNum; } public void setMyNum(Int32 value) { myNum = value; }
上面的代码和你的代码是一个意思,编译成IL后是一样的。
"属性是对字段的封装" 几乎是所有C#教科书上都有的一句话。
谢谢,我的理解是
public是属性能在外部给private的字段赋值;在定义类的内部,但是用private的字段myValue直接参与计算和public型的MyValue参与计算觉得都一样的作用效果,我想知道在类的内部用哪个计算更合理或更安全?
@ZGHAPPY: 从上面的代码可以看出调用属性实际上是在调用对应的方法,建议使用字段吧。
在类的内部一般用字段比较好,类的外部用属性