53. 대리자(Delegate)
.NET프로그래밍/C# 3.5 SP1 2009. 8. 13. 17:31 |
==> 대리자.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 |