본문 바로가기
컴퓨터공학/프로그래밍

함수 | 함수 델리게이트 콜백

by KISCH 2019. 11. 25.
반응형

 

 

1. 함수포인터

 

함수를 할당할 수 있는 변수

메모리 내에서 실행 가능한 코드를 가르킴, 간접 호출

 

델리게이트콜백

 

 

2. 델리게이터

 

Delegator (대리자) : 메소드를 대신해서 호출

 

함수포인터와 달리 정적메소드, 인스턴스 메소드 포인트 가능

가르키는 함수가 자신이 선언된 타입과 일치

특정 객체의 메소드를 델리게이트 명으로만 호출 가능

자기에게 전달된 함수를 대신 실행시켜주는 역할을 하는 함수 포인터

일종의 함수 포인터 : 함수의 주소를 저장하는 포인터 변수

 

델리게이트를 사용하려면 

 

1. 델리게이트 타입의 선언

2. 실행하고자 하는 코드가 담긴 메서드의 정의

3. 델리게이트 인스턴스 생성

4. 델리게이트 인스턴스 호출

 

delegate void SimpleDelegate(); // 선언
delegate void SimpleDelegate2(int i);
 
class Example {
public void Func1() { // 메서드의 정의
System.Console.WriteLine("Example.Func1");
}
public void Func2(int x) {
System.Console.WriteLine("Example.Func2 input=" + x);
}
}
public static void Main(string[] arg) {
Example instance = new Example();
// 인스턴스의 메소드를 가르킬 델리게이트를 생성
SimpleDelegate s1 = new SimpleDelegate(instance.Func1); // 인스턴스 생성
SimpleDelegate s2 = new SimpleDelegate2(instance.Func2);
 
// 인스턴스 호출
s1();
s2(1000);
}

  

 

 

 

3. 콜백

 

1) 다른 메서드에 인수로 전달하는 실행 가능한 코드 (즉시실행 or 나중실행

2) 델리게이트의 진정한 가치는 콜백메세드를 구현할 때 나타남

3) A라는 메소드를 호출할 때 B라는 메서드를 넘겨줘서 A메서드가 B메서드를 호출하도록 하는 것

  • A는 콜백메서드
  • B는 델리게이트

4) 콜백과 코루틴

  • 코루틴은 유니티가 정의한 콜백함수 인터페이스에 가깝다.

 

3.1 Action

1. 반환값과 매개변수가 없는 함수 포인트

2. 반환 형식이 없음

 

delegate void SimpleDelegate();

Action SimpleAction;

 

3.2 Action <>

1. generic을 이용해 매개변수가 있는 형태를 취할 수 있음

2. 반환 형식은 불가

 

Action SimpleAction;

 

3.3 Func <>

Action<>과 반대로 매개변수가 없고 반환값을 가지는 함수포인터

 

반응형

'컴퓨터공학 > 프로그래밍' 카테고리의 다른 글

C# | 레퍼런스 둘러보기  (0) 2020.02.07
C# | 자료형  (0) 2020.02.07
C# | 기초  (0) 2020.02.07
ObjectiveC | Property Synthesize 지시어  (0) 2020.02.07
ObjectiveC | 기초  (0) 2020.02.07
C++ | 기초  (0) 2020.02.07
C | 기초  (0) 2020.02.07
함수 | 익명메소드 람다식  (0) 2020.01.03

댓글