2013-12-19 39 views
0

例如與調度類是這樣的:指定電流委託對象

class Scheduler 
{ 
    public void Add(DateTime time, Action action); 
    ... 
} 

我可以計劃一個簡單的動作是這樣的:

Scheduler scheduler= new Scheduler(); 
scheduler.Add(someTime, delegate() { Console.WriteLine("Done!"); }); 

現在,我希望我的行動,後來重新規劃自己,所以我寫這個:

scheduler.Add(someTime, delegate() { Console.WriteLine("Done!"); scheduler.Add(someTimeLater, !this current action!); }); 

但我該如何指定!這個當前的行動!或以另一種方式編碼?

+0

你怎麼能增加其之前引用委託?即使假定'Scheduler'以某種方式公開委託。 '您的簽名不應該'public void Add(DateTime time,Action action)'? – Jodrell

+0

@Jodrell把它放到一個變量中。 – Servy

回答

2

你需要將它分配給一個變量來做到這一點:

Action action = null; 
action =() => 
{ 
    Console.WriteLine("Done!"); 
    scheduler.Add(someTimeLater, action); 
}; 
scheduler.Add(someTime, action); 
+0

我想這會工作+1。 – Jodrell