1

你应该使用:

property ThumbnailWidth: integer read FThumbnailWidth 
  write FThumbnailWidth default 170;
property ThumbnailHeight: integer read FThumbnailHeight 
  write FThumbnailHeight default 120;

或者

property ThumbnailHeight: Integer read GetThumbnailHeight 
  write SetThumbnailHeight;
property ThumbnailWidth: Integer read GetThumbnailWidth 
  write SetThumbnailWidth;

两种方式都可以吗?

4

1 回答 1

4

这取决于。:-)

如果不需要副作用,您有时可以直接访问私有变量,就像在您的第一个示例中一样。

通常,当属性值更改时,您还需要执行其他操作,例如更新屏幕、进行计算、更改其他内部值等等。在这种情况下,需要getterand setter(readwriteDelphi 中的方法)。

大多数时候我更喜欢首先使用这些方法,因为 Delphi 对组件用户隐藏了它们。很多时候,他们只是直接访问内部值而没有其他影响,但是如果我以后需要更改它,那么要做的工作就更少了。

使用这些方法还有其他用途。如果您需要更改其他属性,有时您需要触发(或避免)它们具有的副作用,您可以通过访问published属性在您的方法中执行此操作(例如,ThumbnailHeight当您更改缩略图宽度以保持比例时,并且需要更新显示),或者在您不这样做时访问内部字段(通过FThumbnailHeight直接使用内部)。

有关直接访问访问方法之间的区别,请参阅文档中的定义属性(尽管后者没有为第一个添加太多信息,但那里有几个链接可以读取/写入方法)。

于 2013-04-12T02:46:31.177 回答