ÀÌ Àý¿¡¼´Â DelegateÀÇ °³¿äÀûÀÎ ºÎºÐ¸¸À» °ËÅäÇϵµ·Ï ÇϰڽÀ´Ï´Ù. DelegateÀÇ ½ÇÁ¦ÀûÀÎ ±¸Çö°ú °ü·ÃµÈ »çÇ×µéÀº 11ÀåÀÇ Delegate¿Í Event ºÎºÐÀ» Âü°í ÇϽñ⠹ٶø´Ï´Ù. Delegate´Â ´ë¸®ÀÚ¶ó´Â Àǹ̸¦ °¡Áö°í ÀÖ½À´Ï´Ù. ¹º°¡¸¦ ´ë½ÅÇØ Áشٴ ÀǹÌÀÔ´Ï´Ù. C#¿¡¼ DelegateÀÇ Àǹ̸¦ ¸ð¸¥´Ù¸é ¹Ù·Î ¹Ùº¸°¡ µË´Ï´Ù. DelegateÀÇ Á¤ÀǺÎÅÍ ³»·Á º¸µµ·Ï ÇÏÁÒ.
|
Áß¿ä !! ¢Ã Delegate¶õ |
|
q ¸Þ¼µåÀÇ ´ë¸®ÀÚ q ¸Þ¼µå¸¦ º¸´Ù È¿À²ÀûÀ¸·Î »ç¿ëÇϱâ À§ÇÏ¿© ƯÁ¤ ¸Þ¼µå ÀÚü¸¦ ĸ½¶ÈÇÒ ¼ö ÀÖ°Ô ¸¸µé¾î ÁÖ´Â ¹æ¹ý |
Delegate°¡ ÁÖ´Â ÀåÁ¡Àº ¸Þ¼µå ÀÚü°¡ ĸ½¶È µÇ¾îÀֱ⠶§¹®¿¡ ¸Þ¼µå¸¦ º¸´Ù È¿À²ÀûÀ¸·Î »ç¿ëÇÒ ¼ö ÀÖ°Ô ÇØ ÁÝ´Ï´Ù. ´ÙÀ½Àº DelegateÀÇ °£´ÜÇÑ ±¸ÇöÀÔ´Ï´Ù.
|
& |
DeleTest.cs |
Ü DelegateÀÇ °£´Ü ±¸Çö |
|
using System; delegate void SimpleDelegate1(); delegate void SimpleDelegate2(int i); class AType{ public void F1() { System.Console.WriteLine("AType.F1"); } public void F2(int x){ System.Console.WriteLine("AType.F2 x=" + x); } } class DeleTest { public static void AType atype = new AType(); SimpleDelegate1 s1 = new SimpleDelegate1(atype.F1); SimpleDelegate2 s2 = new SimpleDelegate2(atype.F2); s1(); s2(1000); }//main }//class | ||
|
C:\C#Example\05>csc DeleTest.cs C:\C#Example\05>DeleTest AType.F1 AType.F2 x=1000 | ||
¸Þ¼µå¸¦ ĸ½¶ÈÇÏ¿© »ç¿ëÇÒ ¼ö ÀÖ´Ù´Â °ÍÀº ¾ÆÁÖ ´Ü¼øÇÑ ±â´ÉÀÔ´Ï´Ù. ´Ü¼øÇÑ ±â´É¸¸ÅÀ̳ª DelegateÀÇ ÆÄ¿ö´Â ±²ÀåÇÕ´Ï´Ù. ´ÙÀ½°ú °°Àº °æ¿ì¸¦ ¿¹¸¦ µé¾îº¸ÁÒ. ¸¸¾à ÇϳªÀÇ Å¬·¡½º¿¡¼ ´Ù¸¥ °ÍÀº ÇÊ¿ä ¾ø°í ´ÜÁö ƯÁ¤°´Ã¼ÀÇ ¸Þ¼µå¿¡¸¸ °ü½ÉÀÌ ÀÖ´Ù°í °¡Á¤Çغ¸ÁÒ. ƯÁ¤°´Ã¼ÀÇ ¸Þ¼µå´Â ±× °´Ã¼ÀÇ ¸â¹ö·Î ¼Ò¼ÓµÇ¾î Àֱ⠶§¹®¿¡ ±× °´Ã¼ÀÇ ¸ðµç ±â´ÉÀ» »ç¿ëÇÒ ¼ö ÀÖÀ» °ÍÀÔ´Ï´Ù. ±×·±µ¥ ¾î¶»°Ô ¸Þ¼µå¸¸À» ¼Ó »©¿Ã±î¶ó´Â »ý°¢À» ÇÏ°Ô µÉ °ÍÀÔ´Ï´Ù.
C#¿¡¼ ½º·¹µå¸¦ ½ÇÇàÇÑ´Ù´Â °ÍÀº ÀÌ¿Í ºñ½ÁÇÕ´Ï´Ù. C#¿¡¼ »ç¿ëµÇ´Â ¸ðµç ½º·¹µå´Â ÇϳªÀÇ Ç¥ÁØ ½º·¹µå¿¡ ¸Þ¼µå¸¸ Ãß°¡ ½ÃÄÑÁÖ°í ½º·¹µå¸¦ ½ÃÀÛÇϸé ÀÛ¾÷À» ¼öÇàÇÕ´Ï´Ù. ¸¸¾à ¸Þ¼µå 10°³°¡ ÀÖ´Ù¸é Ç¥ÁØ ½º·¹µå 10°³¸¦ ¸¸µé°í, ¸Þ¼µå¸¦ Ç¥ÁØ ½º·¹µå¿¡ Çϳª¾¿ ³Ö¾îÁÖ°í ½ÇÇàÇ϶ó°í ¸í·ÉÀ» ³»¸®¸é 10°³ÀÇ ½º·¹µå°¡ µ¿½Ã¿¡ ÀÛ¾÷À» ¼öÇàÇÏ°Ô µË´Ï´Ù.
½º·¹µå¿Í ¸Þ¼µåÀÇ °ü°è´Â ¾ÆÁÖ ´Ü¼øÇÕ´Ï´Ù. Main() ¸Þ¼µåµµ ¾Ë°í º¸¸é ½º·¹µåÀÔ´Ï´Ù. Ç¥ÁØ ½º·¹µå¿¡ Main()À» ³Ö¾îÁÖ°í ½ÇÇàÇØ ´Þ¶ó´Â °ÍÀ̴ϱî¿ä. Áï, 10°³ÀÇ MainÀ» µ¿½Ã¿¡ µ¹¸°´Ù°í °¡Á¤ÇØ º¸ÁÒ. ÀÌ·² ¶§´Â 10°³ÀÇ Ç¥ÁØ ½º·¹µå°¡ ÇÊ¿äÇϰí 10°³ÀÇ Main() ¸Þ¼µå¸¦ °¢°¢ ³Ö¾îÁØ µÚ ½ÇÇàÀ» Çϸé 10°³ÀÇ ½º·¹µå´Â CPUÀÇ TimeÀ» ºÐÇÒÇØ¼ »ç¿ëÇÏ°Ô µÇ´Â °ÍÀÔ´Ï´Ù. ³ÊÇѹø ¶Ç ´Ù¸¥ ³ÊÇѹø...... ±×¸®°í ¸¶Áö¸·À¸·Î ³ªÇѹø! Áï, Ç¥ÁØ ½º·¹µå ÀÔÀå¿¡¼´Â Ç×»ó ½º·¹µå°¡ ¼öÇàµÇ¾îÁö±â Àü¿¡ ¾î¶² ¸Þ¼µå°¡ µé¾î¿ÃÁö ±Ã±ÝÇØ ÇÒ °ÍÀÔ´Ï´Ù. ÀÌ·± ¸é¿¡¼ ½º·¹µå´Â ´Ù¸¥ °´Ã¼ÀÇ ¸Þ¼µå¸¸À» ½ï »©¿Í¼ ¼öÇàÇϰíÀÚ ÇÒ °ÍÀÔ´Ï´Ù. ÀÌ ¶§ ½º·¹µå´Â ¸Þ¼µå¸¦ Delegate·Î Æ÷ÀåÇØ¼ ±× ¸Þ¼µå¸¸À» ´Þ¶ó°í ¿äûÇÏ´Â °ÍÀÔ´Ï´Ù. ½ÇÁ¦ ½º·¹µå¸¦ ½ÇÇàÇϱâ À§ÇÑ ¿¹´Â ´ÙÀ½°ú °°½À´Ï´Ù.
n Top t = new Top();
n Thread t = new Thread(new ThreadStart(t.¸Þ¼µå));
n thread.Start();
C#¿¡¼ µîÀåÇÏ´Â Delegate´Â ½º·¹µå, À̺¥Æ®¿¡¼ ¾ÆÁÖ Áß¿äÇÑ ¿ªÇÒÀ» ´ã´çÇϰí ÀÖ½À´Ï´Ù. ¸Þ¼µå¸¦ ĸ½¶ÈÇÏ¿© ÀÌ¿ëÇϰíÀÚ ÇÑ´Ù¸é ¾îµðµç µîÀåÇÏ´Â ³ðÀÌ ¹Ù·Î DelegateÀÔ´Ï´Ù. ƯÁ¤ °´Ã¼¿¡¼ ¸Þ¼µå¸¦ Á÷Á¢ È£ÃâÇÏ´Â °Íº¸´Ù ¸Þ¼µåÀÇ Ç¥ÁØÆ²À» ÀÌ¿ëÇÏ¿© »ç¿ëÇÏ´Â °ÍÀÌ ÈÙ¾À ½¬¿ì´Ï±î¿ä. ±×¸®°í »ç½Ç Delegate´Â C++¿¡¼ ¸Þ¼µåÀÇ ÁÖ¼ÒÈ£Ãâ¿¡ ÇØ´çÇÕ´Ï´Ù. ¸Þ¼µåÀÇ Æ¯Á¤ ÁÖ¼Ò¸¦ ÀÌ¿ëÇÏ¿© ¸Þ¼µå¸¦ ´õ¿í ¾ÈÀüÇÏ°í ½±°Ô È£ÃâÇϰڴٴ Àǹ̸¦ ´ã°í ÀÖ½À´Ï´Ù. ¸» ±×´ë·Î Delegate´Â ¸Þ¼µåÀÇ ´ë¸®ÀÚ°¡ µÇ´Â °ÍÀÔ´Ï´Ù. ´õ ÀÚ¼¼ÇÑ ³»¿ëÀº 11Àå¿¡¼ ´Ù·çµµ·Ï ÇϰڽÀ´Ï´Ù.
| jabookÀúÀÚ¸íÇÔ |
|
Á¦¸ñ:¼Ò¼³°°ÀºC# Á¦5°ÀÇ ÀúÀÚ:ÃÖ¿µ°ü |