대리자는 매서드에 대한 참조를 나타내는 형식이자 매서드이다!
대리자가 인수가 되서 인스턴스가 되면 매서드를 호출

연결할 매서드의 반환 타입과 매개 변수가 같으면 연결할 수 있다.

 

  • 사용처

1) 특정 기능이 실행(반환)되었을 때, 알람

     ex) 버튼이 눌렸다, 이동이 완료되었다, 죽었다, 변신이 완료되었다,  구매했다, 생성됐다~ 등

         > 프로그램적으로는 언제 기능이 사용될지 모르니 알람을 준다는데 사용자 입장에서는 그게 시작이라는 점이 달라서 신선했다. 내가 누르면 ~가 된다가 아니라 사용자가 ~를 누르면~ 이라는 생각의 차이가 있다.

2)  ** 콜백: 대리자에 연결된 매서드를 인수로 넘겨준다.

 

  • Main
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleApp1
{
    public class Program
    {
        static void Main(string[] args)
        {
            new App();
        }
    }
}

 

  • App

>> 순서 기억하기

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleApp1
{
       public class App
    {

        ////////////// 대리자 형식 사용 순서 ////////////////////////////////
        //1. 대리자 형식 정의 : delegate
        		// 반환 타입 연결할 매서드의 매개 변수와 같아야 한다.
        //2. 대리자 형식의 변수 정의 or 대리자 형식 매개 변수 정의(=콜백한다!)
        //3. 대리자에 붙여 사용할 매서드 만들기
        //4. 대리자의 인스턴스화(대리자 객체(인스턴스)를 생성하고 매서드에 연결)
        //5. 대리자 호출
        //////////////////////////////////////////////////////////////////


        //1. 대리자 형식 정의
        delegate void Callback();
        		// 반환 타입(void) 연결할 매서드의 매개 변수와 같아야 한다.

        //2. 대리자 형식의 변수 정의 or 대리자 형식 매개 변수 정의(=콜백한다!)
        Callback callback;
        

        /////////생성자/////
        public App()
        {
            //4. 대리자의 인스턴스화(대리자 객체(인스턴스)를 생성하고 매서드에 연결함
            callback = SayHello; // 대입 연산자= 오른쪽의 값의 첫 글자가 대문자면 100% 매서드다.
            					 // 실행할 매서드를 callback에 넣어서 호출할 거야~ 5번에서

            //5. 대리자 호출 (연결된 메서드를 호출)
            callback();
        }

        //3. 대리자에 붙여 사용할 매서드 만들기
        void SayHello()
        {
            //기능구현 
            Console.WriteLine("Hello World!");
        }
    }
}

 

 

  • 출력

 

'정리' 카테고리의 다른 글

Text(legacy)가 없습니다.  (1) 2024.08.20
★json★ 파일 적용 및 확인하기2  (0) 2024.08.14
엑셀에 입력한 data를 ★json★ 파일로 변환하는 법1  (2) 2024.08.14
리스트 작성법  (0) 2024.08.13
배열 작성법  (0) 2024.08.13

+ Recent posts