初学者问题:类为什么要用set get ? 直接操作这个字段不行吗?
定义一个类:Public Class myClass
Private _name as String
Property name() as STring
Get
return _name
End Get
Set (ByVal value as String)
_name = value
End Set
End Property
End Class
你要赋值的时候,要做:
Dim person as myClass = New myClass
person.name = 'John'
......
我的疑问是,为什么不直接按下面的定义,直接定义一个字段,然后赋值不就行了吗?为什么要set get 这么麻烦:
Public Class myClass
public name As String
End Class
要赋值运算的时候:
Dim person as myClass = new myClass
person.name = 'john'
.......
初学者,不好意思,求教。 --------------------编程问答-------------------- 设置变量的属性可以控制该变量的可读性和可写性
比如你可以将该变量设置为只读,而不可写。
变量的属性也可实现一些特定的功能,还是比较好用的。
直接定义变量,其实只是默认了该变量的读写性而已。 --------------------编程问答-------------------- 谢谢你的解释。不过还是有些疑惑。
读写可控,这个可以理解。但是程序都是你编的,你要想控制读写你在程序里就可以实现,我就不明白为什么要加这么多罗罗嗦嗦的东西。
变量属性可以实现一些特殊的功能,比如?。。。。。。
我还是没明白,定义Property get set, 它比直接定义变量到底好在哪里。
--------------------编程问答-------------------- 从初学者的角度看,使用属性而不是字段,一个明显的好处在于,你编写的对象就支持标准的控件数据绑定了。 --------------------编程问答--------------------
可能在你上学时,你接触到源代码的程序都是你自己编的。
但是你工作了就不一样了。 --------------------编程问答-------------------- 大多数“技术”,其实核心是在技术之外。你没有需求,就没有办法理解那些技术。 --------------------编程问答-------------------- WPF的绑定字段不行,属性才行 --------------------编程问答-------------------- http://www.doc88.com/p-546677441985.html
看看这篇文章,你会对类的理解 好处比较透彻,
实际上就是 方便复用,扩展,维护 --------------------编程问答--------------------
http://www.cnblogs.com/yinxiangpei/articles/2357091.html
这个更加贴题了 --------------------编程问答-------------------- 现在也不用getset了。
直接用
Property ID as int64
来定义属性了。 --------------------编程问答-------------------- --------------------编程问答--------------------
能具体说说吗?
感谢各位,特别是看了7楼8楼的两篇,对OO的方法了解了很多。 --------------------编程问答-------------------- 定义属性是很多好处的,一个最简单的例子就是可以监控属性的变化
在属性读取或者更改时做相应的处理,例如激发相应的事件
如果你用变量的话就很难实现这样的功能了 --------------------编程问答-------------------- 有一个长方形对象,有三个属性,长,宽,周长。
如果只是用普通的变量成员来定义,每次再给对象赋值是,需要考虑周长是否跟随变化,但是如果使用属性就可以
周长()
{
get{return 长*宽;}
} --------------------编程问答--------------------
我数学体育老师教的... --------------------编程问答-------------------- 哈哈哈 --------------------编程问答--------------------
+1
很有道理 --------------------编程问答-------------------- 你不了解历史,所以也就不了解这个
出现属性概念,因为事件驱动的IDE。比如你在IDE里对一个Color属性设置为Red,结果字就变成红色了
IDE凭啥就知道你把这个东西设置了,他就需要做相应修改呢?
为了做到这样的结果,人们只能人为规定,一套固定规则。早期这套固定规则一般是带命名规则的两个方法
XXX_set()
XXX_get()
只是c#的研发人员人为分开写不容易识别,所以他们把这个玩意包装一下封在了一起,变成了{get;set;}
ps:
Color
{
set{ 通知IDE去修改界面颜色}
}
单纯一个字段,IDE是不知道你修改了滴,你还是需要和IDE约定一个set方法 --------------------编程问答-------------------- 一旦出现事件驱动编程需求,属性的出现可以说基本就是一个必然的结果
不管他在对应语言的语法形式如何,“属性”这种概念一定会存在
属性一方面提供内部封装,外面没必要知道 我怎么处理把男变成0,女变成1的。
另一方面为事件驱动编程提供基石,set,get都是有逻辑的,自然在逻辑出来的过程就可以带入事件消息通知处理过程 --------------------编程问答-------------------- 先明白why,才能真正懂得how --------------------编程问答-------------------- 了解一下动机,然后才明白。
变量的局限性比较多,特别是面向对象的时候。 --------------------编程问答--------------------
哥们有点意思
补充:.NET技术 , VB.NET