[C#] Delegate

2024. 6. 25. 16:31·Game Programming/C#
728x90
반응형

Delegate

C#에서 Delegate는 C++의 함수 포인터와 비슷한 개념으로 메서드를 참조하는데 사용됩니다.

delegate는 메서드의 형식을 정의하며, 특정 형식의 메서드에 대한 참조를 담을 수 있으며,

이를 통해 메서드를 인자로 전달하거나, 이벤트 처리를 할 수 있는 기능을 제공합니다.

 

Delegate의 특징

  • 메서드 참조 : delegate는 메서드를 가리킬 수 있으며, 메서드를 변수처럼 다룰 수 있습니다.
  • 멀티캐스트 : 하나의 delegate 인스턴스에 여러 메서드 추가가 가능합니다. (순차 호출)

Delegate의 선언

public delegate void PrintDelegate(string str);

 

위 코드에서 PrintDelegate는 string 인자를 받고 반환값이 없는 메서드를 참조할 수 있습니다.

 

Delegate의 사용

간단하게 Test 클래스를 만들어 내부 Print 함수의 호출이 끝나면 Delegate에 담긴 메서드를 호출해보겠습니다.

// Delegate 선언
public delegate void PrintDelegate(string str);

class Test
{
    public void TestPrint(PrintDelegate del)
    {
        Console.WriteLine("TEST Print");
        // del(PrintDelegate)이 참조하는 메서드 호출
        del.Invoke("End");
    } 
}

internal class Program
{
    static void Main(string[] args)
    {
        // 메서드 참조(PrintStr, PrintStr2)
        PrintDelegate printDelegate = PrintStr;
        printDelegate += PrintStr2;

        // Test 인스턴스의 TestPrint()함수 실행
        new Test().TestPrint(printDelegate);
    }

    static public void PrintStr(string arg)
    {
        Console.WriteLine("Print : " + arg);
    }

    static public void PrintStr2(string arg)
    {
        Console.WriteLine("Print2 : " + arg);
    }
}

실행 결과

Delegate를 사용하여 위와 같이 특정 상황에서 이벤트를 발생시켜 참조된 메서드들을 호출할 수 있습니다.

728x90
반응형
저작자표시 비영리 변경금지

'Game Programming > C#' 카테고리의 다른 글

[C#] 얕은 복사 vs 깊은 복사 (Shallow Copy vs Deep Copy)  (0) 2024.06.29
[C#] 의존성 주입(DI, Dependency Injection)  (0) 2024.06.29
[C#] as, is  (0) 2024.06.25
[C#] 가변 파라미터, 선택적 인수, 명명된 인수  (0) 2024.06.25
[C#] Null 조건 연산자  (0) 2024.06.25
'Game Programming/C#' 카테고리의 다른 글
  • [C#] 의존성 주입(DI, Dependency Injection)
  • [C#] as, is
  • [C#] 가변 파라미터, 선택적 인수, 명명된 인수
  • [C#] Null 조건 연산자
리태s
리태s
게임 클라이언트 프로그래머 직무를 준비하며 공부한 내용을 정리한 블로그입니다.
    반응형
    250x250
  • 리태s
    LeeTaes 공부노트
    리태s
  • 전체
    오늘
    어제
    • Home (165)
      • 프로젝트 (20)
        • Isaac 3D (5)
        • TimelessAdventure (13)
        • FruitsPuzzle (2)
      • Game Programming (25)
        • C# (8)
        • Unity Engine (6)
        • Unreal Engine (8)
        • UE_Multiplayer (3)
      • 코딩테스트 (111)
        • 프로그래머스 (Lv. 0) (27)
        • 프로그래머스 (Lv. 1) (31)
        • 프로그래머스 (Lv. 2) (21)
        • 백준 (Study) (29)
        • 알고리즘 (3)
      • CS지식 (7)
        • 운영체제 (7)
      • 일상 (2)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    Algorithm
    c#
    청년취업사관학교
    코딩테스트
    프로그래머스
    tsoftobjectptr
    2019 kakao
    CS지식
    sesac
    Summer/Winter Coding
    unrealengine
    fruitspuzzle
    unity
    fsoftobjectpath
    ai controller
    프로세스
    issac3d
    구현
    후기
    프로젝트
    timelessadventure
    2018 kakao
    delegate
    2022 kakao
    pcce 기출문제
    Unreal Engine
    dataasset
    C++
    백준
    project t.a develop
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
리태s
[C#] Delegate
상단으로

티스토리툴바