| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 4500 人关注过本帖
标题:请教字段与属性的区别
只看楼主 加入收藏
海蓝啸
Rank: 5Rank: 5
来 自:安徽
等 级:贵宾
威 望:17
帖 子:1611
专家分:0
注 册:2006-4-3
结帖率:100%
收藏
 问题点数:0 回复次数:9 
请教字段与属性的区别
刚接触C#     被什么字段和属性搞的有的混

public   class   Class1   
  {   
  private   int   m_member;   
  public   Class1()   
  {   
  }   
  public   int   member   
  {   
  get   
  {   
  return   m_member;   
  }   
  set   
  {   
  m_member=value;   
  }   
  }   
   
  }   
   
   
     
   
  public   class   Class1   
  {   
  public   int   m_member;   
  public   Class1()   
  {   
  }   
  }   

有什么区别呢?   
  后者显得简洁得多,为什么却看到多数人都在使用前者?

网上有答案说是数据成员最好不要设置成public的,即数据隐藏。
我想问的是,即使像前者一样设成private的了,但是还不是可以用get 和set进行读写吗?这和public有什么区别???
搜索更多相关主题的帖子: 字段 public member 属性 int 
2007-12-05 09:45
changhai0605
Rank: 1
等 级:新手上路
帖 子:64
专家分:0
注 册:2005-11-17
收藏
得分:0 
属性可以设置是否读写,可以在get和set中加入一些控制,适合和外部交互使用,字段是在程序内部使用,是隐藏的

2007-12-05 11:13
purana
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:广东-广州
等 级:版主
威 望:66
帖 子:6039
专家分:0
注 册:2005-6-17
收藏
得分:0 
同意楼上.

我的msn: myfend@
2007-12-05 11:34
marer
Rank: 2
等 级:新手上路
威 望:3
帖 子:928
专家分:0
注 册:2005-7-18
收藏
得分:0 
例如:
private int a=0;
public int A
{
     get{return this.a;}
     set{this.a=value;}
}
这样的话,如果我用你的类只能看到属性A,而不是内部字段a,这样的好处不言而喻吧

public class 人生历程 extends Thread{public void run(){while(true){努力,努力,再努力!!;Thread.sleep(0);}}}
2007-12-05 13:43
jacklee
Rank: 7Rank: 7Rank: 7
来 自:XAplus
等 级:贵宾
威 望:32
帖 子:1769
专家分:104
注 册:2006-11-3
收藏
得分:0 
解说很详细呀!

XAplus!
讨论群:51090447
删吧删吧,把我的号给删了!
2007-12-05 13:45
海蓝啸
Rank: 5Rank: 5
来 自:安徽
等 级:贵宾
威 望:17
帖 子:1611
专家分:0
注 册:2006-4-3
收藏
得分:0 
原帖由 [bold][underline]marer[/underline][/bold] 于 2007-12-5 13:43 发表 [url=http://bbs.][/url]
例如:
private int a=0;
public int A
{
     get{return this.a;}
     set{this.a=value;}
}
这样的话,如果我用你的类只能看到属性A,而不是内部字段a,这样的好处不言而喻吧 ...


看到属性A不就能看到a吗,既能读也能写。。有什么本质区别吗?

这个社会太复杂。。。
2007-12-05 14:52
ChenMo
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:3
帖 子:481
专家分:10
注 册:2004-4-8
收藏
得分:0 
//如果程序要求 a 的赋值范围必须是 0-100 之间
//使用属性可以将验证范围的操作封装在类体内,
//否则只能依赖外部来验证(这悖离了“高内聚”的原则,该是本类做的封装在本类内)。
private int a=0;
public int A
{
     get{return this.a;}
     set
     {
         if(value >= 0 && value <= 100)
              this.a=value;
         else
              throw new Exception("值的范围不合法。");
     }
}

试想一下如果不用属性,仅仅只使用公开的 a,
那么a的验证需要暴露在外部。
收到的鲜花
  • 天使不哭2007-12-06 14:06 送鲜花  1朵   附言:我很赞同

欢迎加入 MVC 技术讨论群(新群:90093426)
2007-12-06 13:44
天使不哭
Rank: 6Rank: 6
等 级:贵宾
威 望:23
帖 子:677
专家分:22
注 册:2006-7-9
收藏
得分:0 
不错,加分鼓励下

C#Winform技术群:25380362
博客:http:///boyliupan/
2007-12-06 14:10
沉沦过迁
Rank: 2
来 自:广西百色
等 级:论坛游民
帖 子:2297
专家分:10
注 册:2007-5-8
收藏
得分:0 
顶了 也学习了
以前只知道用 秒处没有体会到啊

也许我没有明天,但是我拥有现在
2007-12-06 14:19
netztw
Rank: 1
等 级:新手上路
帖 子:59
专家分:0
注 册:2007-10-14
收藏
得分:0 
感谢,受益匪浅

我是新手,请各位多多指教~! c#爱好者群:7611044 欢迎各位加入,特别是跟我一样学习中的朋友。
2007-12-06 16:00
快速回复:请教字段与属性的区别
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.018496 second(s), 10 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved