2011-09-08 131 views
5

委託人有自己的參考方法嗎?我正在尋找一種方式來做到這一點:委託人參考本身

delegate void Foo(); 
list<Foo> foos; 

void test() { 
    list.Add(delegate() { 
     list.Remove(/* this delegate */); 
    }); 
} 
+1

你到底想用這樣的結構實現什麼? – Oded

+0

不知道我理解你的問題?你只是想從你的'foos'列表中刪除代表? –

+0

@Tony老虎:似乎如此。 – BoltClock

回答

13

我不知道你想要做什麼,但它可能代表對引用自身是這樣的:

delegate void Foo(); 
List<Foo> foos = new List<Foo>(); 

void test() { 
    Foo del = null; 
    del = delegate { foos.Remove(del); }; 

    foos.Add(del); 
} 
2

一種方法是委託接受參數本身:

delegate void Foo(Foo self); 
... 
list.Add(delegate (Foo self) { list.Remove(self);}); 
... 
foreach (Foo f in list) f(f); 

另一種方法是給一個變量闖民宅關閉到自身:

Foo foo; 
foo = delegate() { list.Remove(foo);} 
list.Add(foo);