关类中 变量和属性 的问题

thanyouqdx 2010-03-19 09:43:07
关类中 变量和属性 的问题

我看到好多代码写
先写一个私有变量

然后写一个名字相似的属性
用来访问和更改该私有变量
使这个私有变量能够像公有变量一样的使用

为什么要这样干
为什么不直接使用公有变量
为什么要多此一举
...全文
161 19 打赏 收藏 转发到动态 举报
写回复
用AI写文章
19 条回复
切换为时间正序
请发表友善的回复…
发表回复
fantcy 2010-03-20
  • 打赏
  • 举报
回复
每天回帖 可对换10个可用分
十八道胡同 2010-03-20
  • 打赏
  • 举报
回复
用到属性还有一个好处就是可以对要操作的字段更多控制..

你在get ,set里可以写部分代码来控制
TimDavid 2010-03-20
  • 打赏
  • 举报
回复
没有一个比较好的解释....
Peter200694013 2010-03-20
  • 打赏
  • 举报
回复
安全....
lexfu 2010-03-20
  • 打赏
  • 举报
回复
1L正解
thanyouqdx 2010-03-20
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 netwar 的回复:]
打个比方说
。。。。。
。。。。。。
get{
return this.age;
}set{
if(age>100) throw Exception("年龄不能大于100");
}
}
}

可以有两种方式
test a=new……
[/Quote]

你的意思我明白
但是像下面的内容中 属性有什么用
private string firstName;
public string FirstName {
get { return firstName; }
set { firstName = value; }
}

[Quote=引用 5 楼 wuyq11 的回复:]
属性和字段
尽可能的使用属性(property),而不是数据成员(field)。
把所有的字段都设为私有字段,则把它们封装成属性,字段就是作用于整个类的变量。
属性的实质是方法(get和set方法),数据安全
[/Quote]
这种观点太绝对化了吧
我不大理解 而且像上面的代码中
FirstName 应该不会比 public string firstName 更安全吧
wangxianshou 2010-03-19
  • 打赏
  • 举报
回复
类:封装,继承,多态
--------------------------
面向对象,一般不直接对类内部的变量进行访问,
利用属性来取代对变量的操作
属性 有static型为类所有,不用实例化,直接调用
非static型为类的实例所有,必须实例化后才能调用

kechee 2010-03-19
  • 打赏
  • 举报
回复
如果是公有的,只要有一个地方改动了,会涉及整个应用程序
kechee 2010-03-19
  • 打赏
  • 举报
回复
提高安全性啊,
会飞的老鱼 2010-03-19
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 wuyq11 的回复:]

属性和字段
尽可能的使用属性(property),而不是数据成员(field)。
把所有的字段都设为私有字段,则把它们封装成属性,字段就是作用于整个类的变量。
属性的实质是方法(get和set方法),数据安全
[/Quote]同意该楼!
回复内容长度不足。。。。。。
战斗中成长 2010-03-19
  • 打赏
  • 举报
回复
我觉得属性的get,set方法是非常有用的。可以控制属性对于其它类是否为可读可写,还有当私有变量取值规则变化时利用get会很方便。
属性和私有变量也并不总是一一对应的,只有当属性即是可读又是可写的,而且读写规则都是简单的=操作,并且这种规则永远不会改变时它才和变量一样,当然基本只有在教科书上才可能有这种需求
shixiujin 2010-03-19
  • 打赏
  • 举报
回复
@lz:
我推荐你仔细的理解"人生如梦"给你的留言,讲的还是挺明白的.
shixiujin 2010-03-19
  • 打赏
  • 举报
回复
@lz:
你可以把字段想像成底层的数据也就是不想被他人直接访问的数据,比如银行的账户中的存款的数额便是一个很好的例子,想象一下这个字段能够所有人访问吗?显然不行.但是为了还向外界通信的接口.这时属性的出现便把以上问题解决了.
例子我就不举了,楼上的朋友们都已经举过了.只是随着时间的推移,多多的应用你就会在某一天发现,字段与属性之间的区别和联系了.
wuyq11 2010-03-19
  • 打赏
  • 举报
回复
属性和字段
尽可能的使用属性(property),而不是数据成员(field)。
把所有的字段都设为私有字段,则把它们封装成属性,字段就是作用于整个类的变量。
属性的实质是方法(get和set方法),数据安全
whb147 2010-03-19
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 netwar 的回复:]
打个比方说
public class test{
public int tempAge;//这里定义的一人公共变量
private int age;
public int Age{
get{
return this.age;
}set{
if(age>100) throw Exception("年龄不能大于100");
}
}
}

可以有两种方式
test a=new……
[/Quote]

同意
koukoujiayi 2010-03-19
  • 打赏
  • 举报
回复
为什么不直接使用公有变量
=======================
使用公有变量就违反了类的封装性!!
  • 打赏
  • 举报
回复
[Quote=引用楼主 thanyouqdx 的回复:]
关类中 变量和属性 的问题

我看到好多代码写
先写一个私有变量

然后写一个名字相似的属性
用来访问和更改该私有变量
使这个私有变量能够像公有变量一样的使用

为什么要这样干
为什么不直接使用公有变量
为什么要多此一举
[/Quote]

首先你要明显,所谓属性,其实是一个方法。而对直接使用公有变量,就是真的只是访问这个公共变量而已。而是用属性,你还可以在属性设置或获取的时候,进行动作
netwar 2010-03-19
  • 打赏
  • 举报
回复
打个比方说
public class test{
public int tempAge;//这里定义的一人公共变量
private int age;
public int Age{
get{
return this.age;
}set{
if(age>100) throw Exception("年龄不能大于100");
}
}
}

可以有两种方式
test a=new test();
a.tempAge=110;//这里可以直接设置,这样的话,我们就不能检查这个年龄是否正确,如果用

a.age=110;//如果是这样写的话,那么就会提示相应的错误。

明白了吗?

111,120

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧