delegate

Ư¡:

µ¨¸®°ÔÀÌÆ®´Â »çÀüÀû Àǹ̷Π"´ë¸®ÀÚ"·Î ¸Þ¼Òµå¸¦ ÂüÁ¶ÇÏ´Â º¯¼öÀÌ´Ù.

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