我有一个参数,其名称与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子句。我也不需要这个。
答案 0 :(得分:3)
是否可以引用Param参数来解决此问题,而无需重命名Param?
如果要使用with
,则不会。
另一种解决方案可能是为TSomeClass声明一个变量,而不使用with / do子句。
这种方法将起作用,这也是我编写代码的方式。在with
合适的情况下,只有非常狭窄的一组场景。这不是其中之一。