반응형
한 번의 호출로 하나 이상의 메서드를 대신해서 호출 하는 개념을 가지고 있어
델리게이트는 객체 지향적으로 클래스 안에 있는 메소드를 가리킬 수 있습니다.
직접적이 아닌 간접적으로 대신 호출해서 사용 할 수 있습니다.
(여러개를 처리 할 때 사용)
델리게이트는 객체 지향적으로 클래스 안에 있는 메소드를 가리킬 수 있습니다.
직접적이 아닌 간접적으로 대신 호출해서 사용 할 수 있습니다.
(여러개를 처리 할 때 사용)
delegate.cs |
using System; public class 대리자 { //[!] 대리자 선언 public delegate void GoHome(); //매개변수가 없는 대리자 생성 //예제2 public delegate void Gop(int a); //매개변수가 있는 대리자 생성 //예제3 public delegate int Hap(int a, int b); //반환값이 있는 대리자 public static void Main(string[] args) { //[1] 다중 메서드 호출 Car car = new Car(); car.Run(); car.Left(); car.Right(); //[2]대리자를 통해서 대신 호출 GoHome go; //대리자형 변수(개체) 선언 //[b]메서드 등록 (그릇에 내용을 넣는다.) go = new GoHome(car.Run);//Add go += new GoHome(car.Left); go += new GoHome(car.Right); //Add했지만 아래 -를 만나서~ go -= new GoHome(car.Right); //Remove 가능 go(); //[c]대신 호출 //예제2 - 매개변수가 있는 메서드 대신 호출 Gop gop = new Gop(car.Test); gop(2); gop(4); //예제3 - 반환값 테스트 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("우회전"); } //예제2 public void Test(int a) { Console.WriteLine((a*a)); } //예제3 리턴값(반환값)이 있는 매서드 생성 public int Sum(int a, int b) { return (a + b); } } |
결과값
반응형
'C#' 카테고리의 다른 글
52.C# - GenericMethod (제네릭 메서드) (0) | 2009.08.13 |
---|---|
51.C# - Delegate Event (대리자 이벤트) (0) | 2009.08.13 |
12.C# - 알고리즘 : 병합 (MEARGE) (0) | 2009.08.12 |
11.C# - 알고리즘 : 카운터 (Count) (0) | 2009.08.12 |
10.C# - 알고리즘 : 검색 (Serch) (0) | 2009.08.12 |
Comments