Delphi 在继承的泛型集合中迭代self时发生编译错误

Delphi 在继承的泛型集合中迭代self时发生编译错误,delphi,generics,for-in-loop,Delphi,Generics,For In Loop,我是德尔福的新手,但在C#an方面经验丰富。我通常认为这是一件很容易做到的事情,但我得到了一份工作 “E2430 for in语句无法对集合类型“类引用”进行操作” 在下面代码中,我正在执行“for jobActivity in self do”。我在这里尝试了不同的事情,但我已经失败了!我会认为应该有一些简单的方法来做到这一点,我相信我一定错过了一些东西。有人能帮忙吗 type TJobActivityDetailCollection = class(TObjectList<TJob

我是德尔福的新手,但在C#an方面经验丰富。我通常认为这是一件很容易做到的事情,但我得到了一份工作

“E2430 for in语句无法对集合类型“类引用”进行操作”

在下面代码中,我正在执行“for jobActivity in self do”。我在这里尝试了不同的事情,但我已经失败了!我会认为应该有一些简单的方法来做到这一点,我相信我一定错过了一些东西。有人能帮忙吗

type
  TJobActivityDetailCollection = class(TObjectList<TJobActivityDetail>)
    class function ForYear(year: integer):TJobActivityDetailCollection;
  end;

class function TJobActivityDetailCollection.ForYear(year: integer)
                                      :TJobActivityDetailCollection;
var
  returnCollection   : TJobActivityDetailCollection;
  yearStart, yearEnd : TDateTime;
  jobActivity        : TJobActivityDetail;
begin
  yearStart := EncodeDateTime(year,7,1,0,0,0,0);
  yearEnd   := EncodeDateTime(year + 1,6,30,23,59,59,0);

  returnCollection := TJobActivityDetailCollection.Create();

  for jobActivity in self do
  begin
    if (jobActivity.Date > yearStart) and (jobActivity.Date > yearEnd) then
    begin
      returnCollection.Add(jobActivity);
    end;
  end;

  Result := returnCollection;
end;
类型
TJobActivityDetailCollection=类(TObjectList)
类函数ForYear(year:integer):TJobActivityDetailCollection;
结束;
类函数TJobActivityDetailCollection.ForYear(年份:整数)
:TJobActivityDetailCollection;
变量
returnCollection:TJobActivityDetailCollection;
yearStart,yearEnd:TDateTime;
jobActivity:TJobActivityDetail;
开始
yearStart:=编码日期时间(年,7,1,0,0,0);
年终:=编码日期时间(年份+1,6,30,23,59,59,0);
returnCollection:=TJobActivityDetailCollection.Create();
对于自助作业活动
开始
如果(jobActivity.Date>yearStart)和(jobActivity.Date>yearEnd),则
开始
returnCollection.Add(作业活动);
结束;
结束;
结果:=返回收集;
结束;

方法中(查看文档),
Self
指针是对类类型本身的引用(
TJobActivityDetailCollection
此处),而不是指向类的对象实例的指针。
for..in
循环枚举的是对象实例,而不是类


解决方案是简单地从方法中删除说明符。

方法中(查看文档),
Self
指针是对类类型本身的引用(
TJobActivityDetailCollection
此处),而不是指向类的对象实例的指针。
for..in
循环枚举的是对象实例,而不是类


解决方案是简单地从方法中删除说明符。

方法中(查看文档),
Self
指针是对类类型本身的引用(
TJobActivityDetailCollection
此处),而不是指向类的对象实例的指针。
for..in
循环枚举的是对象实例,而不是类


解决方案是简单地从方法中删除说明符。

方法中(查看文档),
Self
指针是对类类型本身的引用(
TJobActivityDetailCollection
此处),而不是指向类的对象实例的指针。
for..in
循环枚举的是对象实例,而不是类


解决方案是简单地从方法中删除说明符。

Delphi中的类函数是static的C#等价物。您不能从“静态”方法访问self(this)。只需从函数中删除类。

Delphi中的类函数是C#等价于静态函数的。您不能从“静态”方法访问self(this)。只需从函数中删除类。

Delphi中的类函数是C#等价于静态函数的。您不能从“静态”方法访问self(this)。只需从函数中删除类。

Delphi中的类函数是C#等价于静态函数的。您不能从“静态”方法访问self(this)。只需从函数中删除类。

谢谢reckface。。。这很有道理,我现在明白了…谢谢reckface。。。这很有道理,我现在明白了…谢谢reckface。。。这很有道理,我现在明白了…谢谢reckface。。。这很有道理,我现在明白了。。。