加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

delphi – 类的属性和方法参数的重复标识符

发布时间:2020-12-15 09:07:35 所属栏目:大数据 来源:网络整理
导读:我将我的项目从Delphi转移到Lazarus.在一个表单中,我有一个私有方法,参数var Active:Boolean.在Delphi中没关系,但Lazarus给出错误错误:重复标识符“活动”和提示:标识符已在第641行的单元FORMS中定义,在第641行有: property Active: Boolean read FActiv
我将我的项目从Delphi转移到Lazarus.在一个表单中,我有一个私有方法,参数var Active:Boolean.在Delphi中没关系,但Lazarus给出错误错误:重复标识符“活动”和提示:标识符已在第641行的单元FORMS中定义,在第641行有:

property Active: Boolean read FActive;

更改参数名称(使用重构)并不困难,但为什么我不能对方法的属性和参数使用相同的名称?
为了确保它不是Delphi自动转换的错误,我在Lazarus中创建了新项目并添加了私有方法

procedure Test(var Active: Boolean);

结果是一样的.即使我使用const或什么都不使用var.
我查看了FPC文档,但未发现任何此类限制.我只是好奇.

解决方法

您应该能够为属性和参数使用相同的名称.它们具有不同的范围,因此最接近范围的那个(参数,应该被视为与局部变量在同一范围内)应该隐藏范围(属性)中的“更远”.在Delphi中,即使在该方法中,您仍然可以访问该属性,但是您应该将其限定为Self.Active:

procedure TForm1.Test(var Active: Boolean);
var
  ParamActive: Boolean;
  FormActive: Boolean;
begin
  ParamActive := Active;      // gets the var parameter
  FormActive := Self.Active;  // gets the property
  ...
end;

我不知道为什么FPC将它标记为错误.它不应该.

更新

FWIW,如果你改变了

{$mode objfpc}

{$mode delphi}

它按预期编译,你不会收到错误.我刚试过这个.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读