윈도우즈프로그래밍#8
LeeMir, 15 April 2021
클래스(이어서)
델리게이트
- C언어의 함수 포인터를 대체해 만든 기법
- 객체지향적 특징이 반영된 메소드 포인터
- 이벤트와 스레드를 처리하기 위한 방법론
- 정적메소드(static) 및 인스턴트 메소드도 참조 가능(객체지향적)
- 델리게이트의 형태와 참조하고자하는 메소드의 형태는 항상 일치(타입안정적)
- 델리게이트 객체를 통하여 메소드를 호출
- 델리게이트 할 메소드의 메소드 반환형 및 매개변수의 개수, 반환형을 일치시켜야 함
- 델리게이트를 사용하기 위해서는 델리게이트 객체를 생성하고 대상 메소드를 연결해야 함
- 하나의 델리게이트 객체에 형태가 동일한 여러 개의 메소드를 연결하여 사용 가능
- C# 언어는 델리게이트를 위한 +와 -연산자 제공(메소드 추가/제거)
익명 메소드
-
이름이 없는 메소드
-
두 번 다시 호출할 일이 없는, 다시 말해 1회용 메소드를 선언할 때 이용
-
public static void Main() { Calculate Calc; Calc = delegate (int a, int b) { return a + b; } }
이벤트
- 사용자 행동에 의해 발생하는 사건
- 어떤 사건이 발생한 것을 알리기 위해 보내는 메시지
- C#에서는 이벤트 개념을 프로그래밍 언어 수준에서 지원
- 이벤트 처리기
- 발생한 이벤트를 처리하기 위한 메소드
- 이벤트 정의 순서
- 이벤트 처리기의 형태와 일치하는 델리게이트를 정의
- 델리게이트를 이용하여 이벤트를 선언
- 이벤트 처리기를 작성
- 이벤트에 이벤트 처리기를 등록
- 이벤트를 발생
- 델리게이트와 같이 +와 -로 이벤트 추가 및 제거 가능
- .NET 프레임워크는 이미 정의된
System.EventHandler
델리게이트를 이벤트에 사용하는 것을 권고
구조체
- 클래스와 동일하게 객체의 구조와 행위를 정의하는 방법
- C, C++에서의 구조체와 전혀 다른 개념
- 클래스와 차이점
- 클래스 - 참조형, 구조체 - 값형
- 클래스 객체는 힙에 저장되고 구조체 객체는 스택에 저장
- 배정 연산에서 클래스는 참조가 복사되고 구조체는 내용이 복사
- 구조체는 상속이 불가능
- 구조체는 소멸자를 가질 수 없음
- 구조체의 멤버는 초기값을 가질 수 없음