2011-09-08 36 views
5

Có cách nào để đại biểu tham chiếu không? Tôi đang tìm kiếm một cách để làm điều này:Tham chiếu ủy quyền

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

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

Chính xác bạn đang cố gắng đạt được gì với cấu trúc như vậy? – Oded

+0

Bạn không chắc chắn tôi hiểu câu hỏi của bạn? Bạn có muốn xóa đại biểu khỏi danh sách 'foos' của mình không? –

+0

@Tony Con hổ: Có vẻ như vậy. – BoltClock

Trả lời

13

tôi không chắc chắn chính xác những gì bạn đang cố gắng để làm, nhưng nó có thể cho một đại biểu để tham khảo bản thân như thế này:

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

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

    foos.Add(del); 
} 
2

Một cách là dành cho các đại biểu để chấp nhận một đối số cho chính nó:

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

Một cách khác sẽ được đóng trên một kh¶o biến để bản thân :

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