닷넷프로그래밍정복 김상형저 가메출판사

...

이벤트

  1. 멀티캐스트 - delegate는 System.Delegate로부터 파생된 클래스이며 이 클래스의 객체는 하나의 메소드를 가르킬수 있다. 이 외에 둘 이상의 메소드를 가르킬수 있고 이것은 System.MulticastDelegate로부터 파생된다. 멀티캐스트 델리게이트는 여러개의 메소드를 등록할수 있는 목록을 가지고 있으며 등록된 순서대로 메소드를 호출하게 된다.
  2. 이벤트 - 어떤 사건이 발생했을때 호출되어야 하는 메소드의 목록이다. 내부적으로 멀티캐스트 델리게이트로 구현되며 사건 발생시 저장된 메소드를 순서대로 호출한다. 특정 사건이 발생할때마다 이 사건을 처리하고 싶다며 ㄴ이벤트에 호출할 메소드를 미리 등록해놓고 이 메소드에서 원하는 코드를 실행하면된다. 이벤트에 의해 호출되는 메소드를 특별히 이벤트 핸들러라 하고 관용적으로 EventHandler라는 이름을 사용한다.
  3.  익명 메소드 - 메소드는 일정한 선언 형식이 있기때문에 실제 작업을 하는 코드보다도 메소드의 헤더나 본체를 감싸는 블록이 소스를 더 많이 차지하며 작은 메소드들이 너무 많아지면 관리하기도 번거롭다. 또한 콜백 메소드나 이벤트 핸들러는 보통 특정한 상항에서 딱 한번만 호출되는 일회용이며 여러번 호출되지도 않아 반복제거의 의미도 없다. 이런 짧은 메소드에 이름붙이는 것조차 귀찮다. 그래서 익명메소드라는 것을 사용한다 . delegate 인자를 메소드 코드를 바로 넣는 것이다.

    ex.  delegate int dele(int a, int b)

           class CSTest

         {

    static void Main()

    {

    dele d = delegate (int a, int b) { return a + b};

    int k = d(2,3);

    }

    }

    여기서 익명메소드의 인수목록은 델리게이트의 인수목록과 정확하게 일치하거나 아예 인수목록이 없는 경우에 유효하다. 인수목록이 없는 경우 그 인수를 무시하고 정의한 함수는 가능하다.

     

이 글은 스프링노트에서 작성되었습니다.

by 무위자연 2008. 8. 26. 09:22