미처 완성되지 못한 알고리즘
delegate 와 event 본문
delegate란 쉽게 얘기해서 함수 포인터다.
원하는 함수 타입 앞에 delegate란 키워드를 붙여주며 원하는 함수의 형식으로 선언한다.
예)
한정자 delegate 반환형식 델리게이트 이름( 매개변수 목록);
public delegate void myDelegate(int a );
사용 예)
namespace ConsoleApp1
{
public delegate void myDelegate( int a); ----------- 1
class Program
{
public void printNum(int a)
{
Console.WriteLine("{0}",a);
}
static void Main(string[] args)
{
Program p1 = new Program();
myDelegate dele = new myDelegate(p1.printNum); ----------2
dele(4); ----------3
}
}
}
1.델리게이트를 선언한다.
2.델리게이트 객체를 선언하면서 생성자에 해당 객체의 메소드 이름을 넘겨준다.
3.델리게이트 객체 변수 이름을 사용하면서 해당 메소드를 이용하는 것을 보여준다.
델리게이트는 += 기호를 통해 여러 메소드를 등록할 수도 있고 -=를 통해 제거를 할 수도 있다.
event
이벤트는 특정 사건이 일어나면 발생되는 호출로 요약할 수 있다. 이벤트가 발생하면 이벤트에 등록된
메소드를 통해 처리하는데 이것을 이벤트 처리기라고 한다.
이벤트는 한정자 event DelegateType 이벤트네임 ; 으로 선언된다.
이벤트는 미리 정의된 델리게이트형으로 선언하기 때문에 먼저 이벤트를 처리하는 메소드와 형태가
일치하는 델리게이트를 정의해야 한다.
사용 예)
namespace ConsoleApp1
{
public delegate void myDelegate( int a); -------------------1
class Program
{
public event myDelegate Event; -------------------2
public void printNum(int a)
{
Console.WriteLine("{0}",a);
}
static void Main(string[] args)
{
Program p1 = new Program();
p1.Event += new myDelegate(p1.printNum); --------------------3
p1.Event(4); --------------------4
}
}
}
-------------------------------------------------------------------------------------------------------------------
초기화 시, null을 대입해준다.
'IT > c#' 카테고리의 다른 글
Thread (0) | 2017.08.24 |
---|---|
LINQ (0) | 2017.08.24 |
오버플로를 검사하기 위한 checked와 unchecked 문 (0) | 2017.08.23 |
Nullable type (0) | 2017.08.23 |
형변환 연산자 is, as (0) | 2017.08.23 |