参数名称与类成员冲突

时间:2019-07-14 06:03:56

标签: class delphi parameters delphi-xe6

我有一个参数,其名称与with / do范围内的过程相同。经过数小时的调查,我意识到了这一点,但现在我正在寻找一种比重命名参数更好的解决方案。

Procedure Test(Param:TMyTape);
begin
    with TSomeClass.Create do
    try
        AClassFunc(Param);   // << There is a Param method inside TSomeClass
    finally
        free;
    end;
end;

Param内有TSomeClass方法使Param参数无用。如果该Param方法的结果类型与Param参数相同,则编译器甚至不会注意到。

Q :是否可以引用Param参数来解决此问题,而无需重命名Param

另一种解决方案可能是为TSomeClass声明一个变量,而不使用with / do子句。我也不需要这个。

1 个答案:

答案 0 :(得分:3)

  

是否可以引用Param参数来解决此问题,而无需重命名Param?

如果要使用with,则不会。

  

另一种解决方案可能是为TSomeClass声明一个变量,而不使用with / do子句。

这种方法将起作用,这也是我编写代码的方式。在with合适的情况下,只有非常狭窄的一组场景。这不是其中之一。