使用Getter函数定义只读属性的首选方法是什么:
TMyClass = class(TObject)
private
function GetValue: integer
public
property Value: integer read GetValue;
end;
或
TMyClass = class(TObject)
public
function Value: integer;
end;
[编辑]我知道这也是一个品味问题,所以我将这个问题改为: 这两种方法的专业人士和对手是什么?
答案 0 :(得分:1)
第一个是首选方法。
由于您希望通过名称读取值,因此通过属性执行此操作是常见的方法。 function
通常由GetValue
或ExtractFilePath
等指令命名。变量和属性由它们存储的值命名。
答案 1 :(得分:1)
我建议最大的实际区别是,如果你有任何使用RTTI来检查属性的代码(例如使用流媒体的任何东西),那么选项1将适用于此,选项2赢得了#t。此外,如果这是一个具有继承结构的类,您将无法使用选项2轻松更改可见性。
另一方面,选项2更简洁,如果它是一个简单的程序,可能就是你所需要的。
答案 2 :(得分:0)
这实际上取决于你实际上要用这个功能做什么;例如,如果您希望它挂钩到实时绑定(例如Prototype Bind Source),您将需要声明属性