考虑这段代码
type
TMyObject=class
private
FName: Integer;
function Name: Integer;
public
property Name : Integer read FName;
function Name(Param1 : integer) : Integer; overload;
end;
是否可以在delphi中创建一个具有相同名称的属性和函数(或过程)?
是否存在允许创建类似的类的任何指令或编译器开关?
答案 0 :(得分:5)
不,不是。此外,没有指令或编译器开关允许这样做。
答案 1 :(得分:1)
答案在您尝试此操作时收到的错误消息中...您确实尝试过了吗?
答案 2 :(得分:0)
因为我看到overload
关键字。我怀疑你可能默认的是参数
如果您使用
function Name(Param1: Integer = SOME_VALUE): Integer;
可以将其称为:=Name
或:=Name(5)
答案 3 :(得分:0)
偶然地,我发现有一个类具有与父类中的函数同名的属性(反之亦然)。
但是,我会避免这种情况,因为它会让你感到困惑。特别是如果功能和属性有不同的含义!
答案 4 :(得分:0)
目前,编译器无法做你想做的事 从理论上讲,编译器的未来版本可以:
方法的签名(重载与否)由名称和参数类型组成 对于索引属性的签名也是如此 由于属性和方法的签名空间是部分链接的(因此编译器错误消息),因此可以扩展组合空间以包括属性重载。
当然,由于向后兼容,该扩展可能适得其反。
- 的Jeroen