사진 설명을 입력하세요.
1)대리자 + 2)람다 -> 3)비동기 -> 4) .NET 네트워크
C# 스타일에 맞는 네트워크 프로그래밍을 하려면, 비동기(Thread, Task, Async, Parallel) 구조 구현을 이해해야 한다.
C# 스타일 비동기 구조 구현을 위해서는, 대리자와 이벤트를 이해해야 한다.
C# 에서 대리자와 이벤트의 사용은 사용자 생성 대리자와, func, action 대리자에 람다를사용 할 수 있어야 한다.
: C#은 객체지향 프로그래밍 언어다.
: Delegate(대리자)또한, 함수를 객체화시켜 다형성을 이루는 하나의 방법일 뿐이다.
- Delegate
1. Noun (집단의 의사를 대표하는) 대표(자)
2. Verb (권한업무 등을) 위임하다
- CallBack
3. Noun 컴퓨터 (컴퓨터나 전화 사용자의) 회신
1. Delegate(대리자)
1) 같은 형태의 여러 메소드들은, 동일한 구조를 가진다.
2) 동일한 구조의 메서드들을, 대리자 형태로 묶을 수 있다.
3) 대리자는 매개변수에서 int, double 과 같은 Data Type 역할의 객체로써 다형성을 이룬다.
2. Generic Delegate
3. Delegate Chain
: 대리자는 같은 형태의 메서드들의 Data Type 역할을 할 수 있으므로, 인스턴스 생성이 가능하다.
: 메서드가 참조된 대리자의 인스턴스에 매소드 여러개를 참조하면, 참조된 매소드가 순차적으로 실행된다.
: 추가, += 연산자, Delegate.Combine() 메소드
: 제거, -= 연산자, Delegate.Remove() 메소드
- 매개변수가 없는 메서드의 대리자
- 매개변수가 있는 메서드의 대리자
4. Anonymous Method
: 매서드의 이름이 없는 메서드
: 매개변수 자리에 함수 구현
5. Event
이벤트는 event 키워드로 수식된 대리자
이벤트: public 한정자라도 클래스 외부에서 호출 불가
대리자: public internal 외부에서 얼마든지 호출 가능
대리자는 대리자대로 콜백 용도로 사용하고,
이벤트는 이벤`트대로 객체의 상태 변화나 사건의 발생을 알리는 용도로 구분해서 사용
이벤트를 선언시, 항상 비어있는 익명 메소드로 미리 초기화
6. Winform Control + Event 예제
// button1 클래스 내에, click 이라는 이벤트 대리자가 선언되어 있다.
this.button1.Click += new System.EventHandler(button1_Click);
// click 이벤트 대리자에 button1_Click 이라는 메서드를 추가하면,
// click 이벤트 대리자 실행시, 추가된, button1_Click 이 실행된다.
private void button1_Click(object sender, EventArgs e)
{
((Button)sender).BackColor = Color.Red;
}
// 제공된 대리자는 void mehtodName(object sender, EventArgs e) 형태라는 것을 유추 할 수 있다.