2011-09-08 5 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);