1 using System;
2
3 namespace 대리자
4 {
5 // Hello 클래스
6 public class Hello
7 {
8 // 매개변수가 없는 정적 메서드
9 public static void Hi() { Console.WriteLine("안녕"); }
10 // 매개변수가 있는 인스턴스 메서드
11 public void Bye() { Console.WriteLine("또봐"); }
12 }
13 // Sum 클래스
14 public class Sum
15 {
16 public static void Execute(int x, int y)
17 {
18 Console.WriteLine("{0} + {1} = {2}"
19 , x, y, (x + y));
20 }
21 }
22 // Main 클래스
23 public class MainClass
24 {
25 //[!] 대리자 선언
26 // 매개변수가 없는 메서드 등록 가능
27 public delegate void HelloDelegate();
28 // 매개변수가 있는 메서드 등록 가능
29 public delegate void SumDelegate(int a, int b);
30
31 public static void Main(string[] args)
32 {
33 //[1] 다중 메서드 호출 방식 : 따로 따로 호출
34 Hello.Hi();
35 Hello hello = new Hello();
36 hello.Bye();
37
38 //[2] 대리자 사용 : 대리자를 통한 메서드 대신 호출
39 HelloDelegate helloDelegate;
40 helloDelegate = new HelloDelegate(Hello.Hi);
41 helloDelegate += new HelloDelegate(hello.Bye);
42 helloDelegate(); // 대리자를 통한 다중 메서드 호출
43
44 //[3] 매개변수가 있는 메서드 대신 호출
45 SumDelegate sumDelegate =
46 new SumDelegate(Sum.Execute);
47 sumDelegate(3, 5);
48 }
49 }
50 }