==> 대리자.cs


using System;

public class 대리자
{
    //[!] 대리자 선언
    public delegate void GoHome(); // 매개변수가 없는 대리자
    public delegate void Gop(int a); // 매개변수가 있는 대리자
    public delegate int Hap(int a, int b); // 반환값이 있는 대리자
    public static void Main()
    {
        //[1] 다중 메서드 호출
        Car car = new Car();
       
        car.Run();
        car.Left();
        car.Right();

        //[2] 대리자를 통해서 대신 호출
        GoHome go; //[a] 대리자형 변수(개체) 선언
        go = new GoHome(car.Run); //[b] 메서드 등록
        go += new GoHome(car.Left); // Add(=car.Left 추가)
        go += new GoHome(car.Right);
        go -= new GoHome(car.Left); // Remove(=car.Left 삭제)
        go(); //[c] 대신 호출

        //[3] 매개변수가 있는 메서드 대신 호출
        Gop gop = new Gop(car.Test);
        gop(2);
        gop(4);

        //[4] 반환값 테스트
        Hap hap = new Hap(car.Sum);
        Console.WriteLine(hap(3, 5));
    }
}



/*

대리자는 클래스 밖에 선언할 수도 있다.

*/



==============================================================================================



==> Car.cs



using System;

public class Car
{
    public void Run()
    {
        Console.WriteLine("전진");
    }
    public void Left()
    {
        Console.WriteLine("좌회전");
    }
    public void Right()
    {
        Console.WriteLine("우회전");
    }

    // 매개변수가 있는 메서드
    public void Test(int a)
    {
        Console.WriteLine((a * a));
    }

    // 반환값이 있는 메서드
    public int Sum(int a, int b)
    {
        return (a + b);
    }

}
   


   

'.NET프로그래밍 > C# 3.5 SP1' 카테고리의 다른 글

55. 무명메서드  (0) 2009.08.13
54. 이벤트(Event)  (0) 2009.08.13
알고리즘 - 11. 병합정렬(Merge)  (0) 2009.08.13
알고리즘 - 10. 검색(Search)  (0) 2009.08.13
52. 정수형인덱서와 문자열인덱서  (0) 2009.08.13
Posted by holland14
: