Ư¡:
µ¨¸®°ÔÀÌÆ®´Â »çÀüÀû Àǹ̷Π"´ë¸®ÀÚ"·Î ¸Þ¼Òµå¸¦ ÂüÁ¶ÇÏ´Â º¯¼öÀÌ´Ù.
C++¿¡¼ ÇÔ¼ö Æ÷ÀÎÅÍ¿Í ºñ½ÁÇÑ ±â´ÉÀ¸·Î »ç¿ëµÇ¸ç, ±â´ÉÀÌ ´õ ´Ù¾çÇÏ´Ù.
.Net Framework¿¡¼ event 󸮿¡ ¸¹ÀÌ »ç¿ëµÈ´Ù.
delegateÀÇ signature´Â È£ÃâÇÒ ¸Þ½îµåÀÇ ½Ã±×³ÊÃÄ°¡ ÀÏÄ¡ÇØ¾ß ÇÑ´Ù.
Ŭ·¡½º ³»ºÎ¿¡ ¼±¾ð ÇÒ ¶§´Â Á¢±ÙÀÚ¸¦ ºÙÀδÙ.
using System;
delegate void FoodDelegate(string s); // 1. µ¨¸®°ÔÀÌÆ® ¼±¾ð
class MainApp{ public static void Good(string s) { Console.WriteLine("{0} is good.", s); }
public static void Bad(string s) { Console.WriteLine("{0} is bad.", s); }
public static void Main() { FoodDelegate food = new FoodDelegate(Good); // 2. ¸Þ¼Òµå µî·Ï food += new FoodDelegate(Bad);
food("liquor"); // 3. µ¨¸®°ÔÀÌÆ® È£Ãâ } }
|
µ¨¸®°ÔÀÌÆ®¸¦ »ç¿ë ÇÒ·Á¸é µ¨¸®°ÔÀÌÆ® ¼±¾ð, ¸Þ¼Òµå µî·Ï, µ¨¸®°ÔÀÌÆ® È£Ãâ 3´Ü°è¸¦ °ÅÄ£´Ù.
1. µ¨¸®°ÔÀÌÆ® ¼±¾ð
Ŭ·¡½º ³»ºÎ¿¡¼ ¼±¾ð½Ã¿¡´Â Á¢±Ù ¿¬»êÀÚ¸¦ °¡Àå ¾Õ¿¡ ºÙÀδÙ. ±× ´ÙÀ½ delegate¸¦ ¼±¾ðÇÏ°í ³ª¸ÓÁö µÚ¿¡ ¿Ã ±¸¹®Àº È£ÃâµÉ ¸Þ¼ÒµåÀÇ ½Ã±×³ÊÃÄ¿Í ÀÏÄ¡Çϵµ·Ï ¼±¾ðÇÑ´Ù. (Èì... ÇÔ¼ö Æ÷ÀÎÅÍÀÇ ¼±¾ð°ú ºñ½ÁÇϱ¸³ª !!!)
2. ¸Þ¼Òµå µî·Ï
¸Þ¼Òµå µî·ÏÀº ¼±¾ðµÈ µ¨¸®°ÔÀÌÆ®¸¦ new·Î »ý¼º½Ã ¸ÞµåÀÇ À̸§À» ³Ñ±ä´Ù. µ¨¸®°ÔÀÌÆ®´Â ÇÕ¼º(+, -) ¸í·ÉÀ» »ç¿ëÇÏ¿© ¸í·ÉÀ» Á¶ÇÕÇÏ´Â °ÍÀÌ °¡´ÉÇÏ´Ù.
3. µ¨¸®°ÔÀÌ È£Ãâ
»ý¼ºÇÑ µ¨¸®°ÔÀÌÆ®¸¦ ±â³É ½ÇÇàÇÏ¸é µÈ´Ù.
¾Æ·¡ ÄÚµå´Â Food¶ó´Â Ŭ·¡½º¸¦ ÅëÇØ delegate¸¦ È£ÃâÇÏ´Â ÄÚµå·Î À§ÀÇ Äڵ带 Food Ŭ·¡½º·Î ¼öÁ¤ ÇÑ°ÍÀÌ´Ù..
ÄÝ¹é ¸Þ¼µå·Î »ç¿ëÇÒ¶§´Â ´ÙÀ½°ú °°½À´Ï´Ù.
delegate int CalcDelegate(int a, int b);
class Calc
{
public void Run(int a, int b, CalcDelegate dele)
{
Console.WriteLine(dele(a, b));
}
public int Plus(int a, int b) { return a + b; }
public int Minus(int a, int b) { return a - b; }
public void Test()
{
Run(10, 20, Plus);
Run(10, 20, Minus);
}
}
|
ÂüÁ¶)
http://mrw0119.tistory.com/19
|