C# - Delegates

Alpha, Orderly·2023년 7월 8일
0

CSharp

목록 보기
8/11

Delegates

  • 함수의 참조를 담을수있는 타입.
  • C언어의 함수포인터와 유사함.

사용순서

  1. Delegate를 만든다.
delegate void Example();
  1. Delegate 객체를 만들어 선언 및 초기화 한다.
Example ex = () => {Console.WriteLine("Tada");};
  1. ex() 와 같이 호출해 사용한다.
ex();

익명함수

delegate(int a) { return a + 1; };
  • 메소드 선언 필요 없이 Delegate를 생성할수 있다.

람다식

(int a) => { return a + 1; };
  • 익명함수를 더 간단하게 사용할수 있다.
  • 익명함수 또는 람다식에 로컬 변수를 직접 사용할수도 있다, 이 경우 값이 아닌 참조를 통해 사용한다.

대표적인 Delegate Type, Type<T, Treturn>

  • 제네릭을 통해 한개의 패러미터 입력 타입과 리턴 타입을 지정한다.
  • <int, int, int> 와 같이 2개의 int를 받고 1개의 int 를 리턴하는 식으로 지정 또한 가능하다.
Func<int, int> Example = (int a) => { return a * 2; };

Multicast Delegate

Func<> Example a;
a += () => { Console.WriteLine(1); };
a += () => { Console.WriteLine(2); };
  • Delegate 에 += 연산을 통해 메소드를 추가할수 있으며, 추가된 모든 메소드를 실행하게 된다.
  • -= 연산자를 통해 추가되었던 값을 다시 뺄수도 있다.
  • 위와 같이 여러개를 실행하고자 할 경우, 실행되는 함수들의 리턴값은 void여야만 한다.
    • 아닐 경우 여러 리턴값이 충돌하게 된다.
profile
만능 컴덕후 겸 번지 팬

0개의 댓글