• 참고내용 : https://docs.microsoft.com/ko-kr/dotnet/csharp/programming-guide/delegates/using-delegates?source=recommendations
using System.IO;
namespace root{
    public class delegate_sample{
        public void init(){
            // Instantiate the delegate.
            Del d1 = DelegateMethod; //유형이 맞으면 대리자 등록
            Del d2 = DelegateMethod2;
            Del handler = d1 + d2; //대리자를 덧셈으로 추가 가능
            handler += d2; //가산식 적용가능
            // 뺄셈이나 감산식 적용가능

            // Call the delegate.
            handler("delegate sample activate!");

            MethodWithCallback(0,1,handler); //대리자를 메서드에 전달하여 콜백용으로 사용

            int invocationCount = handler.GetInvocationList().GetLength(0); //대리자에 포함된 메서드 숫자 알아내기
            Console.WriteLine("invocationCount:"+invocationCount);
        }

        public void CallBackFunction(){
            Console.WriteLine("call back function activate!");
        }

        public delegate void Del(string message); //대리자 선언

        public static void DelegateMethod(string message){
            Console.WriteLine(message);
        }
        public static void DelegateMethod2(string message){
            Console.WriteLine("is from 2 :"+message);
        }

        public static void MethodWithCallback(int param1, int param2, Del callback)
        {
            callback("The number is: " + (param1 + param2).ToString());
        }
    }
}