[C#] 9. CallBack

Connected Brain·2025년 4월 24일

면접 질문 대비

목록 보기
9/60

콜백이란 무엇인가요? 콜백을 사용해본 경험이 있을까요?

한 줄 요약

CallBack : 함수를 인자로 전달하고, 특정 시점이 되었을 때 전달받은 함수를 호출하는 것.
사용 예시 요약 : List에 대한 값의 변화가 있을 때 UI 요소를 초기화해주는 함수가 호출되어야 함. 이를 위해 List 클래스에 델리게이트를 추가해 UI를 담당하는 클래스에서 UI 초기화를 위한 함수를 전달. 이후 List 값에 대한 변동이 발생할 때 전달받은 함수를 호출

CallBack

  • 주요한 특징은 함수를 다른 함수의 인자로 전달하는 것
  • UI나 키 입력 등 특정 입력이 발생했을 때 특정 함수를 실행하도록 하는 데에 사용

사용예시

public class EffectDictionary : ObservableDictionary<int, BaseEffect>, IObservable<EffectDictionary>
{
    public event Action<EffectDictionary> AnyValueChanged = delegate { };

    public override void Invoke() => AnyValueChanged(this);
}
	public new void Add(TKey key, TValue value)
    {
        base.Add(key, value);
        Invoke();
    }

    public new virtual void Clear()
    {
        base.Clear();
        Invoke();
    }

    public new void Remove(TKey key)
    {
        base.Remove(key);
        Invoke();
    }
  • 위의 EffectDictionary 클래스는 Add, Remove 등 값에 변경이 있는 기능이 실행될 경우 Inoke();를 호출해 AnyValueChanged 델리게이트에 등록된 함수를 실행하도록 하고 있다.
  • 해당 방식을 사용한 이유는 EffectDictionary 값에 따라 UI를 표현하고자 할 때, UI가 직접 EffectDictionary의 변경을 추적하지 않고, 변경이 발생하였을 대 UI를 업데이트 하는 함수를 해당 델리게이트에 등록하는 것만으로 UI 변경을 구현할 수 있기 때문에 위와 같은 구조를 사용하였다.

0개의 댓글