C#/C#정리

[C#] Callback - 콜백은 어떻게 사용하는가?

반나무 2021. 8. 31. 20:37

🌳 Callback

델리게이트의 진가가 발휘되는 시점은 바로 콜백 기능을 이용할 때다.

콜백이란 호출을 당한 쪽에서 다시 호출한 쪽의 메서드를 호출하는 것이다.


🌳 일반적인 콜백예제

public class CallbackExample
{
	void Main()
	{
		Mother mother = new Mother();
		Son son = new Son();
		
		mother.GetSionToStudy(son);
	}
}

// 
class Mother
{
	// 1번
	public void GetSonToStudy(Son son)
	{
		son.Study(this);
	}
	
	// 3번
	public void FinishStudy()
	{
		Debug.Log("Study done");
	}
}


class Son
{
	// 2번 (콜백을 위해 Mother를 전달)
	public void Study(Mother mother)
	{
		// 나를 부른 클래스의 메소드를 다시 콜하고있음 -> 콜백
		mother.FinishStudy();
	}
}

피호출자(Son)이 호출자(Mother)의 메소드를 사용하기위해 Mother을 전달 받는다.

델리게이트 콜백을 사용하면 객체를 전달하지 않고 메서드만 담아 전달해 사용할 수 있다.


🌳 Delegate Callback 예제

public class CallbackExmaple
{
	void Main()
	{
		Mother mother = new Mother();
		Son son = new Son();

		mother.GetSonToStudy(son);
	}
}

// 델리게이트 선언
delegate void StudyDelegate();

//
class Mother
{
	public void GetSonToStudy(Son son)
	{
		StudyDelegate del = FinishStudy;
		son.Study(del);
	}

	public void FinishStudy()
	{
		Debug.Log("Study done");
	}
}

//
class Son
{
	public void Study(StudyDelegate del)
	{
		// 델리게이트 메소드
		del();
	}
}
반응형