参数名称与 class 成员冲突

Parameter name conflict with class member

我有一个参数,其名称与 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;

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

Q: 是否可以参考Param参数解决这个问题,不需要重命名Param

另一个解决方案可能是为 TSomeClass 声明一个变量并且不使用 with/do 子句。我也不找这个。

Is it possible to refer to Param parameter to resolve this issue and don't needs to rename the Param?

如果您要使用 with,则不会。

Another solution maybe declaring a variable for TSomeClass and don't using with/do clause.

这种方法会奏效,而且我会这样编写代码。只有极少数情况下 with 是合适的。这不是其中之一。