2014-02-08 66 views
0

我是新來的,但德爾福在C#中我經歷了一個通常會認爲這是一個非常容易的事,但我得到一個編譯錯誤

「E2430換在聲明中不能對集合類型'類參考'進行操作「

在下面的代碼中,我正在執行」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; 
+0

謝謝reckface ...這非常有意義,我現在明白了... –

回答

0

Delphi中的類函數是靜態的C#等價物。你不能從「靜態」方法訪問自我(this)。從功能中刪除類。

3

方法(看Class Methods文檔)的Self指針是類的類型本身(TJobActivityDetailCollection此處)的引用,而不是一個指向類的對象實例。 A for..in循環枚舉一個對象實例,而不是一個類。

解決方法是簡單地從該方法中刪除類別說明符。

+0

感謝雷米的幫助。現在這一切都非常有意義...... –