首页新闻找找看学习计划

字段 属性 该访问哪个

0
悬赏园豆:10 [已解决问题] 解决于 2015-07-14 17:42

属性是对字段的封装,属性一般就public,字段一般private。

 

比如有

private int a;
public int A
{
    get{ return a }
    set{ a = value }   
}

 

那么在类的内部, 字段a 和属性A 都能访问。

 

那么在累的内部,如果要修改a的值,该对a修改还是A修改?

萨尔的主页 萨尔 | 初学一级 | 园豆:20
提问于:2015-07-11 16:51
< >
分享
最佳答案
0

一般来说你应该修改a的值,属性的主要是用来让外部使用,你可以通过get set来限制外部使用,保证代码内部逻辑不会全部暴露出去.

特殊情况比如你在get set中加入了其他与字段a相关的业务,为了保证业务流程还是修改属性A(不推荐)  还是上面那句话属性是提供外部使用,保证不暴露内部逻辑

收获园豆:4
jio92 | 小虾三级 |园豆:1064 | 2015-07-11 17:12
其他回答(3)
0

用A,这样可以保证内外操作a的入口统一。现在一般写成public int A { get; set; }就行了。

收获园豆:3
liqipeng | 园豆:1160 (小虾三级) | 2015-07-11 17:12

有些时候属性能对外部提供一个限制。还是需要字段的

//只提供get
private int a;
public int A
{
    get { return a}
}


//set时提供验证
private int a;
public int A
{
    get { return a}
    set 
    {
       //验证。。
    }
}

 

支持(0) 反对(0) 萨尔 | 园豆:20 (初学一级) | 2015-07-11 17:43

@★luan:

1. 只提供get

public int A { get; private set; }

2. set时提供验证

难道在内部赋值时就不应该验证吗?

支持(0) 反对(0) liqipeng | 园豆:1160 (小虾三级) | 2015-07-11 22:03
0

如果说属性A就是对a简单的访问和设置的封装,那随便了用那个,一般在程序内是推荐用私有字段来访问的。

如果说属性A不是简单的对a访问和设置的话,在get和set中还有其他的逻辑处理,那么这种情况下,你自己就要根据需要权衡下了。

这种问题一般看你自己喜欢那种处理,没有特定怎么去访问属性和字段那个会更优的,当然一般直接访问字段会好点的

收获园豆:3
visonme | 园豆:1674 (小虾三级) | 2015-07-11 20:57
0

你想太多了。

爱编程的大叔 | 园豆:29862 (高人七级) | 2015-07-11 21:09

没想多,给个意见吧

支持(0) 反对(0) 萨尔 | 园豆:20 (初学一级) | 2015-07-13 19:05
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册