首页 新闻 会员 周边

C#中关于字段与属性的问题?

0
悬赏园豆:5 [已解决问题] 解决于 2013-05-14 17:17
 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计算好呢,更合理一些?

c#
ZGHAPPY的主页 ZGHAPPY | 菜鸟二级 | 园豆:207
提问于:2013-05-13 15:13
< >
分享
最佳答案
1

用属性,被封装的字段相当于不存在了。

当然,你偏要扣什么效率之类的牛角尖,那就当我没说。

收获园豆:5
凹出来 | 初学一级 |园豆:33 | 2013-05-14 11:15

也就是说被封装的字段仅仅只是一个过程量而已?

ZGHAPPY | 园豆:207 (菜鸟二级) | 2013-05-14 12:27

@ZGHAPPY: 是的,当它被封装后,就不是重点了,不然干嘛封装?不也是有个目的才去给它加上get;set吗,我们还要多打几个字母上去,多累啊

凹出来 | 园豆:33 (初学一级) | 2013-05-14 16:34

@凹出来: 有道理,谢谢,领教了

ZGHAPPY | 园豆:207 (菜鸟二级) | 2013-05-14 17:16
其他回答(2)
0
private Int32 myNum;

        public Int32 getMyNum()
        {
            return myNum;
        }

        public void setMyNum(Int32 value)
        {
            myNum = value;
        }

上面的代码和你的代码是一个意思,编译成IL后是一样的。

"属性是对字段的封装" 几乎是所有C#教科书上都有的一句话。

写代码的小2B | 园豆:4371 (老鸟四级) | 2013-05-13 15:34

谢谢,我的理解是

public是属性能在外部给private的字段赋值;在定义类的内部,但是用private的字段myValue直接参与计算和public型的MyValue参与计算觉得都一样的作用效果,我想知道在类的内部用哪个计算更合理或更安全?

支持(0) 反对(0) ZGHAPPY | 园豆:207 (菜鸟二级) | 2013-05-13 16:00

@ZGHAPPY: 从上面的代码可以看出调用属性实际上是在调用对应的方法,建议使用字段吧。

支持(0) 反对(0) 写代码的小2B | 园豆:4371 (老鸟四级) | 2013-05-13 17:59
0

在类的内部一般用字段比较好,类的外部用属性

飞~翔 | 园豆:149 (初学一级) | 2013-05-13 18:46
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册