在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
Property是一个很有意思的语法特性,它使得方法具有了字段的调用特征,并赋予字段执行动作的能力。 如果你使用过C++ Builder来写基于VCL的程序,我想很多人都会注意到这样一点,比如: 这就是因为Property这一特性,Property是Borland为C++扩展的语法特性,目的在于使C++ Builder能够方便的使用VCL库,毕竟VCL是使用Object Pascal写的。 有些扯远了,言归正传,这里还是总结一下在Delphi中如何使用Poperty这一语法特性。 如果学习过C#的朋友应该会很容易理解,因为C#的属性就是学习自Delphi,毕竟C#和Delphi是同一个设计者。 定义一个属性Property的基本格式如下: 这里简单解释一下: 2。属性的特征类似于字段,所以属性名就像字段名,属性值类型就像字段的值类型 3。属性读函数,是属性被“读取”时所执行的操作,这样在执行“取值”操作时,具备了执行其他动作的可能。 4。属性写函数,是属性被“写入”时所执行的操作,这样在执行属性“赋值”操作时,具备了执行其他动作的可能。比如:写入edt的Text属性时,窗口会同时执行界面更新操作。 这里的函数是真正的函数,不像C#中那样的getter和setter,所以会有些难以理解。 5。属性读函数的函数声明: 其中读函数名可以自定义,只要和属性声明中一样即可,该函数的返回值就是读属性操作时实际获取的值。 6。属性写函数声明(其实是一个子函数): 其中写函数名可以自定义,只要和属性声明中一样即可,该函数参数value,就是对属性赋值时传递过来的实际值。 7。读函数和写函数必须设置一个,如果只设置读函数,而没有设置写函数(同时去掉write关键字),这样的属性就是只读属性,同理也可以设置只写属性 8。为了保证属性公开性的同时掩盖读写函数的可见性,可以将读写函数设置为私有,而将属性设置为共有,这样可以避免将读写函数本身暴露给调用者,否则就不太拉风了。 举例: TxKernelSearchThread = class(TThread) procedure TxKernelSearchThread.SetKeyword(value: UnicodeString); 上面是一个只写属性的例子。 属性的一个很重要的应用就是VCL中的控件属性,以及事件属性等,这也就解释了为什么向文本框的Text属性赋值,会更新界面操作,这正是因为属性将字段和函数的特征结合了起来。 |
2023-10-27
2022-08-15
2022-08-17
2022-09-23
2022-08-13
请发表评论