윈도우즈프로그래밍#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++에서의 구조체와 전혀 다른 개념
  • 클래스와 차이점
    • 클래스 - 참조형, 구조체 - 값형
    • 클래스 객체는 힙에 저장되고 구조체 객체는 스택에 저장
    • 배정 연산에서 클래스는 참조가 복사되고 구조체는 내용이 복사
    • 구조체는 상속이 불가능
    • 구조체는 소멸자를 가질 수 없음
    • 구조체의 멤버는 초기값을 가질 수 없음