본문 바로가기

C#

Delegate

 

 


     //delegate 리턴타입 델리게이트명(매개변수)
public delegate void PrintInfoDel();


void Start()
{
	PrintInfoDel printInfoDel;
}

 

 

 

public delegate int TestDel(int valueA, int valueB);

int Sum(int A, int B)
{
return A + B;
}

void Start()
{
	TestDel testDel;
    testDel = Sum;
}

public delegate 데이터타입 이름(변수 ... ) 이건 채용 공고같은 것. 조건이다.

 

 

함수를 대신 실행해주는 녀석이다!

 

어떠한 처리 A와 B 사이에 내가 실행하고 싶은 처리가 있을 때 사용해줌.

public void TestPrint(PrintInfoDel del)
{
Debug.Log("처리A");
del();
Debug.Log("처리B);
}

 

외부에서 코드가 들어와 유연하게 바뀌는 걸 콜백 이라 부르는 듯?

 

 

=====정리=====

 

public class TestScript : MonoBehaviour
{
	public delegate int PrintNum();
    public delegate int AvgNum(int numA, int numB);
    
    
    public void TestPrintNum(PrintNum del)
    {
    	Debug.Log("처리 A");
        del(); // 이러면 실행된다!! 콘솔창 출력 원할 시 Debug.Log(del()); 하면 됨
        Debug.Log("처리B");
    }

	public void TestPrintAvg(AvgNum del)
    {
    	Debug.Log("처리A");
        del();
        Debug.Log("처리B");
    }
    
    public int PrintInfo()
    {
    return 10;
    }
    
    public int AverageNum(int numA, int numB)
    {
    return (numA + numB) / 2;
    }
    
    
    private void Start()
    {
    TestPrintNum(PrintInfo);
    TestPrintAvg(AverageNum);
    }
}

 

 

DelegateChain += FuncOne;

DelegateChain += FuncTwo;

Progress(DelChain)

 

다음 DelChain은 one과 two가 더해져서 나옴

 

 

DelegateChain -=FuncOne;

 

빼는 것도 가능

 

 

 

'C#' 카테고리의 다른 글

Event  (0) 2022.06.20
Delegate - Action, Func  (0) 2022.06.20
base.Awake();  (0) 2022.06.16
싱글턴 패턴  (0) 2022.06.15
일반화  (0) 2022.06.15