È®Àå ¸Þ¼µå(Extension Method)´Â ±âÁ¸ÀÇ Å¬·¡½º¸¦ À¯ÁöÇÑ
ä·Î ¸Þ¼µå¸¦ Ãß°¡ÇÏ´Â ¹æ¹ýÀÌ´Ù. ¿ÜºÎ¿¡ º°µµ·Î Á¤ÀÇÇÏÁö¸¸ ¸¶Ä¡ Ŭ·¡½º¿¡ ¼ÓÇØ ÀÖ´Â ¸Þ¼µåó·³ È£ÃâÇÒ
¼ö ÀÖ´Ù. ¿Ö ÀÌ·± ¸Þ¼µå°¡ ÇÊ¿äÇÑÁö ´Ü°èº°·Î ¿¹Á¦¸¦ ¸¸µé¾î º¸ÀÚ.
Integer |
|
using
System; public class
Integer { public
int a; public
Integer(int aa) { a = aa; } public
int Add(int b) { return a + b; } public
int Mul(int b) { return a * b; } } class CSTest
{ static
void Main() { Integer
Num = new Integer(3); Console.WriteLine("µ¡¼À : " + Num.Add(2)); Console.WriteLine("°ö¼À : " + Num.Mul(2)); } } |
|
½ÇÇà°á°ú |
µ¡¼À : 5 °ö¼À : 6 |
Á¤¼ö¸¦ Ç¥ÇöÇϴ Ŭ·¡½º Integer¸¦ ¼±¾ðÇÏ°í µ¡¼À°ú °ö¼ÀÀ» ÇÏ´Â ¸Þ¼µå Add¿Í MulÀ» Á¤ÀÇÇß´Ù.
Integer¿¡ »¬¼À ±â´ÉÀ» Ãß°¡ÇÏ°í ½Í´Ù¸é ¸Þ¼µå¸¸ Ãß°¡ÇÏ¸é µÈ´Ù.
public class Integer {
....
public
int Sub(int b) { return a - b; }
}
Console.WriteLine("»¬¼À
: " + Num.Sub(2));
±×·¯³ª ¸ðµç Ŭ·¡½ºÀÇ ¼Ò½º¸¦ ¸¶À½´ë·Î ¶â¾î °íÄ¥ ¼ö ÀÖ´Â °ÍÀº ¾Æ´Ï´Ù.
Integer°¡ ´å³Ý ÇÁ·¹ÀÓ¿öÅ©¿¡ ¼ÓÇÑ ½Ã½ºÅÛ Å¬·¡½ºÀ̰ųª µ·ÁÖ°í ±¸ÀÔÇÑ ¶óÀ̺귯¸®¿¡ ¼ÓÇØ ÀÖ´Ù¸é »ç¿ë¸¸ ÇÒ ¼ö ÀÖÀ» »Ó ¼öÁ¤ÇÒ ¼ö´Â
¾ø´Ù.
»ó¼ÓÀº ¿ø·¡ÀÇ Å¬·¡½º¸¦ ±×´ë·Î µÎ°í ÆÄ»ý Ŭ·¡½º¸¦ »õ·Î ¸¸µå´Â °ÍÀÌ¾î¼ È®Àå°ú´Â ´Ù¸£´Ù. ÆÄ»ý Ŭ·¡½º´Â ¿ø·¡ÀÇ Å¬·¡½º¿Í À̸§ÀÌ ´Þ¶ó Ŭ¶óÀ̾ðÆ®ÀÇ Äڵ嵵 ¸ðµÎ ¼öÁ¤ÇØ¾ß ÇÑ´Ù. ¼Ò½º°¡ ¾øÀ¸¸é ¼öÁ¤ÇÒ ¼ö ¾øÀ¸´Ï ¾î¶±ÇÏµç ¹Û¿¡¼ ±â´ÉÀ» Ãß°¡ÇÏ´Â ¼ö¹Û¿¡ ¾ø´Ù.
Integer Ŭ·¡½º´Â ±×´ë·Î µÎ°í CSTest Ŭ·¡½º¿¡ »¬¼À ¸Þ¼µå¸¦ Ãß°¡ÇØ º¸ÀÚ.
IntegerSub |
½ÇÇà°á°ú |
using
System; public class
Integer { public
int a; public
Integer(int aa) { a = aa; } public
int Add(int b) { return a + b; } public
int Mul(int b) { return a * b; } } class CSTest
{ static
int Sub(Integer I, int b) { return I.a - b; } static
void Main() { Integer
Num = new Integer(3); Console.WriteLine("µ¡¼À : " + Num.Add(2)); Console.WriteLine("°ö¼À : " + Num.Mul(2)); Console.WriteLine("»¬¼À : " + Sub(Num, 2)); } } |
µ¡¼À : 5 °ö¼À : 6 »¬¼À : 1 |
Á¤Àû ¸Þ¼µå Sub¸¦ Ãß°¡ÇÏ°í
Integer °´Ã¼ I¿Í Á¤¼ö b¸¦ ¹Þ¾Æ I.a¿Í b¸¦ »¬¼ÀÇÑ °á°ú¸¦ ¸®ÅÏÇÑ´Ù. Integer °´Ã¼¿Í Á¤¼ö¸¦ »©´Â ¸ñÀûÀº ´Þ¼ºÇßÁö¸¸ Ŭ·¡½º ¼Ò¼ÓÀÇ Add³ª Mul°ú »ç¿ë ¹æ¹ýÀÌ ´Ù¸£´Ù. ¿ÜºÎ¿¡ Á¤ÀÇµÈ Á¤Àû ¸Þ¼µå¿©¼ Num.Sub(2)·Î È£ÃâÇÒ ¼ö ¾ø°í °´Ã¼¸¦ Àμö·Î Àü´ÞÇÏ¿©
Sub(Num,2)·Î È£ÃâÇØ¾ß ÇÑ´Ù.
ÀÌ ¹®Á¦¸¦ ÇØ°áÇÏ´Â °ÍÀÌ È®Àå ¸Þ¼µåÀÌ¸ç ¿ÜºÎÀÇ Á¤Àû ¸Þ¼µå¸¦ ÀνºÅϽº ¸Þ¼µåó·³ È£ÃâÇÏ´Â ¹®¹ýÀ» Á¤ÀÇÇÑ´Ù. Ŭ·¡½º¸¦ ¶â¾î °íÄ¡Áö ¾Ê°í ¿ÜºÎ¿¡¼ º¸±â¿¡ ¸Þ¼µå°¡ ´Ã¾î³ °Íó·³ ¸¸µé¾î ÁØ´Ù. È®Àå ¸Þ¼µåÀÇ Ã¹ ¹ø° Àμö´Â È®Àå ´ë»ó Ŭ·¡½ºÀÇ °´Ã¼À̸ç this ÁöÁ¤ÀÚ¸¦
ºÙÀδÙ. ¶Ç È®Àå ¸Þ¼µå´Â º°µµÀÇ Á¤Àû Ŭ·¡½º¿¡ Á¤ÀÇÇÑ´Ù.
IntegerExt |
½ÇÇà°á°ú |
using
System; public class
Integer { public
int a; public
Integer(int aa) { a = aa; } public
int Add(int b) { return a + b; } public
int Mul(int b) { return a * b; } } public
static class IntegerExt { public
static int Sub(this Integer I, int b) { return
I.a - b; } } class CSTest
{ static
void Main() { Integer
Num = new Integer(3); Console.WriteLine("µ¡¼À : " + Num.Add(2)); Console.WriteLine("°ö¼À : " + Num.Mul(2)); Console.WriteLine("»¬¼À : " + Num.Sub(2)); } } |
µ¡¼À : 5 °ö¼À : 6 »¬¼À : 1 |
IntegerExt Á¤Àû Ŭ·¡½º¸¦ ¼±¾ðÇÏ°í ÀÌ ¾È¿¡ Sub Á¤Àû ¸Þ¼µå¸¦ ¼±¾ðÇß´Ù. ù ¹ø° Àμö´Â Integer I °´Ã¼ÀÌµÇ this Å°¿öµå¸¦ ºÙ¿´´Ù. ¿©±â¼ this´Â ¹Ù·Î µÚÀÇ Å¬·¡½º¿¡ ´ëÇÑ È®Àå ¸Þ¼µåÀÓÀ» ÀǹÌÇÏ´Â
ÁöÁ¤ÀÚ(Modifier)ÀÌ´Ù. Sub´Â Integer Ŭ·¡½ºÀÇ È®Àå ¸Þ¼µåÀÌ´Ù.
µÎ ¹ø° ÀÌÈÄÀÇ Àμö´Â ÀÚÀ¯·Ó°Ô ¹Þ¾ÆµéÀδÙ. Sub´Â Á¤¼ö b¸¦ ¹Þ¾Æ I.a¿Í bÀÇ
Â÷¸¦ °è»êÇÏ¿© ¸®ÅÏÇÑ´Ù. È®Àå ¸Þ¼µå¸¦ ÀνºÅϽº ¸Þ¼µåó·³ È£ÃâÇϸé È£Ãâ °´Ã¼¸¦ ù ¹ø° Àμö·Î Àü´ÞÇÑ´Ù. Num.Sub(2) È£Ãâ¹®ÀÌ ³»ºÎÀûÀ¸·Î´Â Sub(Num, 2)·Î
¹Ù²ï´Ù. ÀνºÅϽº ¸Þ¼µå È£Ãâ½Ã ¼û°ÜÁø ÂüÁ¶ÀÚ this¸¦
Àü´ÞÇÏ´Â °Í°ú À¯»çÇÏ´Ù.
Sub ¸Þ¼µå°¡ Ŭ·¡½º ¼Ò¼ÓÀÎÁö ¿ÜºÎ¿¡¼ È®ÀåÇÑ °ÍÀÎÁö ½Å°æ¾µ ÇÊ¿ä ¾øÀÌ Integer Ŭ·¡½º¿¡ ¿ø·¡ ÀÖ´Â °Íó·³ È£ÃâÇÏ¸é µÈ´Ù. È£Ãâ ¹®¹ýÀº
ÀνºÅϽº ¸Þ¼µå¿Í °°Áö¸¸ ¼Ò¼ÓÀº ¿ÜºÎ¿©¼ Ŭ·¡½ºÀÇ ¼û°ÜÁø ¸â¹ö´Â ¾×¼¼½ºÇÒ ¼ö ¾ø´Ù. ±×·¡¼ È®Àå ¸Þ¼µå°¡
ĸ½¶È À§¹ÝÀº ¾Æ´Ï¸ç º¸¾È»óÀÇ ¹®Á¦´Â ¾ø´Ù.
È®Àå ¸Þ¼µå¸¦ ´ã´Â Á¤Àû Ŭ·¡½º´Â À̸§À̳ª ¼Ò¼Ó¿¡ Á¦ÇÑÀÌ ¾ø´Ù. È®Àå
¸Þ¼µå´Â Àü¿ªÀ̾î¾ß ÀÚ¿¬½º·´Áö¸¸ C#Àº Àü¿ªÀÇ °³³äÀÌ ¾ø¾î ¾î¿ ¼ö ¾øÀÌ Á¤Àû Ŭ·¡½º·Î ²®µ¥±â¸¦ °¨½Î´Â
°Í »ÓÀÌ´Ù. ¿ÜºÎ ³×ÀÓ½ºÆäÀ̽º¿¡ ¼±¾ðµÇ¾î À־ using¹®¸¸
¼±¾ðÇØ µÎ¸é Àß Ã£¾Æ³½´Ù. using Linq ¼±¾ð¸¸ Çϸé LINQ¸¦
Áö¿øÇÏ´Â È®Àå ¸Þ¼µå¸¦ ÀÚÀ¯·Ó°Ô ¾µ ¼ö ÀÖ´Ù.
Ŭ·¡½º ¼Ò¼ÓÀº ¾Æ´ÏÁö¸¸ ¿ÜºÎ¿¡¼ º¸±â¿¡ ÀνºÅϽº ¸Þ¼µåó·³ º¸ÀδÙ. ±×·¡¼
»ç¿ëÀÚ¿¡°Ô È¥¶õÀ» ÁÖÁö ¾Ê°í ±âÁ¸ÀÇ Å¬·¡½º¸¦ È®ÀåÇÏ´Â ÁÁÀº ¹æ¹ýÀÌ´Ù. ÇÁ·¹ÀÓ¿öÅ©¿¡ Á¤ÀǵǾî ÀÖ´Â ½Ã½ºÅÛ
Ŭ·¡½ºµµ È®ÀåÇÒ ¼ö ÀÖ´Ù.
Int32Ext |
½ÇÇà°á°ú |
using
System; public
static class Int32Ext { public
static int Dubae(this int n) { return
n * 2; } public
static int Jegop(this int n) { return
n * n; } } class CSTest
{ static
void Main() { Console.WriteLine("µ¡¼À : " + 5.Dubae()); Console.WriteLine("Á¦°ö : " + 5.Jegop()); } } |
µ¡¼À : 10 Á¦°ö : 25 |
Á¤¼ö¿¡ Dubae´Ï JegopÀÌ´Ï
ÇÏ´Â ¸Þ¼µå´Â ¿ø·¡ ¾ø´Ù. ÇÏÁö¸¸ È®Àå ¸Þ¼µå¸¦ ¾²¸é ÀÌ·± ±â´ÉÀÌ ¿ø·¡ ÀÖ¾ú´ø °Íó·³ ¸¸µé ¼ö ÀÖ´Ù. Á¤¼ö¿¡ ´ëÇØ µÎ ¹è¿Í Á¦°öÀÌ Àß ½ÇÇàµÈ´Ù. ÀÌ ¹æ¹ýÀ» ¾²¸é ¸ðµç
Ŭ·¡½º¸¦ È®ÀåÇÒ ¼ö ÀÖÀ¸¸ç ¿°ÅÇüµµ Ŭ·¡½ºÀÇ ÀÏÁ¾ÀÌ¾î¼ Àû¿ëÇÒ ¼ö ÀÖ´Ù.
È®Àå ¸Þ¼µå´Â ¸ÚÁø ¹æ¹ýÀÌÁö¸¸ ³²¿ëÇؼ´Â ¾ÈµÇ¸ç ²À ÇÊ¿äÇÒ ¶§¸¸ »ç¿ëÇØ¾ß ÇÑ´Ù. Ŭ·¡½º¸¦
È®ÀåÇÏ´Â Á¤¼®Àº »ó¼ÓÀÌ´Ù. È®Àå ¸Þ¼µå·Î ÇÁ·ÎÆÛƼ³ª À̺¥Æ®¸¦ Ãß°¡ÇÒ ¼ö´Â ¾ø´Ù. ÀÌ¿¡ ºñÇØ »ó¼ÓÀº Ãß°¡ ¼±¾ð, ÀçÁ¤ÀÇ´Â ¹°·ÐÀÌ°í ´ÙÇü¼º±îÁö ¹ßÈÖÇÒ
¼ö ÀÖ´Ù.
°°Àº À̸§ÀÇ ¸Þ¼µå°¡ Ŭ·¡½º¿¡µµ ÀÖ°í È®Àå ¸Þ¼µå·Îµµ Á¸ÀçÇÑ´Ù¸é ÀνºÅϽº ¸Þ¼µå°¡ ¼±ÅõȴÙ. ¿¡·¯´Â ¹ß»ýÇÏÁö ¾ÊÀ¸¸ç È®Àå ¸Þ¼µåÀÇ ¿ì¼±¼øÀ§°¡ ³·´Ù. È®Àå ¸Þ¼µå·Î
ÀνºÅϽº ¸Þ¼µå¸¦ ÀçÁ¤ÀÇÇÒ ¼ö´Â ¾øÀ¸¸ç ÀÌ·± °æ¿ìµµ »ó¼ÓÀÌ Á¤¼®ÀÌ´Ù.
¶÷´Ù Ç¥Çö½Ä(Lambda Expression)Àº Äڵ带 ¸Þ¼µå¾øÀÌ ÀζóÀÎÀ¸·Î
ÀÛ¼ºÇÏ´Â ±â¹ýÀÌ´Ù. ÀÍ¸í ¸Þ¼µå¿Í À¯»çÇÏÁö¸¸ ´ÙÀ½ ¼¼ °¡Áö ¸é¿¡¼ ±â´ÉÀûÀ¸·Î ¿ìÀ§¿¡ ÀÖ´Ù.
l ÀμöÀÇ Å¸ÀÔÀ» »ý·«ÇÒ
¼ö ÀÖ´Ù. »ý·«µÈ ŸÀÔÀº µ¨¸®°ÔÀÌÆ®ÀÇ Å¸ÀÔÀ» µû¸¥´Ù.
l º»Ã¼¿¡ ¸í·É¹® »Ó¸¸
¾Æ´Ï¶ó Ç¥Çö½Äµµ ¾µ ¼ö ÀÖ¾î Á» ´õ ª´Ù.
l Ç¥Çö½Ä Æ®¸®·Îµµ º¯È¯ÇÒ
¼ö ÀÖ´Ù.
µÑ ´Ù Äڵ带 ª°í °£°áÇÏ°Ô Ç¥ÇöÇÏ´Â °ÍÀÌ ¸ñÀûÀÌ´Ù. º°°Å ¾Æ´Ñ°Å °°Áö¸¸
Äõ¸® Ç¥Çö½Ä¿¡¼´Â ¹«½ÃÇÒ ¼ö ¾øÀ» Á¤µµÀÇ Â÷ÀÌ°¡ ¹ß»ýÇÑ´Ù. ¶÷´Ù Ç¥Çö½ÄÀº ±Ø´ÜÀûÀÎ °£°áÇÔÀ» À§ÇØ µµÀÔÇÑ
°ÍÀÌ´Ù. ¶÷´Ù Ç¥Çö½ÄÀÇ ½Ç¿ë¼ºÀ» ¿¬±¸ÇØ º¸±â À§ÇØ ¼ø¼´ë·Î ¿¹Á¦¸¦ ¸¸µé¾î º¸¸é¼ Äڵ尡 ¾î¶»°Ô ª¾ÆÁö´ÂÁö
»ìÆ캸ÀÚ. ¸ðµç ¿¹Á¦ÀÇ Ãâ·Â °á°ú´Â µ¿ÀÏÇ쵂 ÄÚµåÀÇ Çü½Ä¸¸ Á¶±Ý¾¿ ´Ù¸£´Ù. ¸ÕÀú ¸Þ¼µå¸¦ Á¤ÀÇÇÏ´Â ¿¹Á¦ºÎÅÍ º¸ÀÚ.
Method |
|
using
System; class CSTest
{ static
int Add(int a) { return
a + 1; } static
void Main() { int
k = Add(3); Console.WriteLine("k
= " + k); } } |
|
½ÇÇà°á°ú |
k = 4 |
Add ¸Þ¼µå´Â Á¤¼ö Çϳª¸¦ Àü´Þ¹Þ¾Æ
1 ´õÇÑ °ªÀ» ¸®ÅÏÇÑ´Ù. ¾îÂ ½¬¿îÁö ÇÑ ´« °¨°í Àо ÀÌÇØ°¡ µÈ´Ù. Àú·± ªÀº Äڵ带 À§ÇØ ¸Þ¼µå¸¦ Á¤ÀÇÇÏ´Â °ÍÀÌ ¹ø°Å·Ó±â ¶§¹®¿¡ ÀÍ¸í ¸Þ¼µå¸¦ Áö¿øÇÑ´Ù.
AnonMethod |
using
System; delegate int
Dele(int a); class CSTest
{ static
void Main() { Dele
d = delegate (int a) { return a + 1; }; int
k = d(3); Console.WriteLine("k
= " + k); } } |
µ¨¸®°ÔÀÌÆ® ÇüÅ·ΠÄڵ带 Á¤ÀÇÇÏ°í µ¨¸®°ÔÀÌÆ®¸¦ È£ÃâÇß´Ù. µ¨¸®°ÔÀÌÆ® ¼±¾ð¹®
¶§¹®¿¡ ±æÀÌ¿¡´Â º° º¯È°¡ ¾øÁö¸¸ ¸Þ¼µå ÀÚü´Â »ç¶óÁ³´Ù. µ¨¸®°ÔÀÌÆ® ¼±¾ð¹®Àº º¸Åë ¶óÀ̺귯¸®¿¡ ¹Ì¸®
¼±¾ðµÇ¾î ÀÖ´Â °æ¿ì°¡ ¸¹¾Æ ½ÇÁ¦ ¿¹¿¡¼´Â ´õ ª´Ù. ¶÷´Ù Ç¥Çö½ÄÀ» ¾²¸é Á¶±Ý ´õ ª¾ÆÁø´Ù.
Lambda |
using
System; delegate int
Dele(int a); class CSTest
{ static
void Main() { Dele
d = a => a + 1; int
k = d(3); Console.WriteLine("k
= " + k); } } |
µ¨¸®°ÔÀÌÆ®ÀÇ º»Ã¼¸¦ ¶÷´Ù Ç¥Çö½ÄÀ¸·Î ´ëüÇß´Ù. ¹°·Ð µ¨¸®°ÔÀÌÆ®¿Í ÀμöÀÇ
°³¼ö³ª ŸÀÔÀº ÀÏÄ¡ÇØ¾ß ÇÑ´Ù. a => a + 1ÀÌ ¹Ù·Î ¶÷´Ù Ç¥Çö½ÄÀÌ´Ù. ±âº» Çü½ÄÀº ´ÙÀ½°ú °°´Ù.
(Àμö) => Ç¥Çö½Ä ¶Ç´Â ¸í·É¹®
=> ¿¬»êÀÚÀÇ ¿ÞÂÊÀÌ ÀμöÀÌ°í ¿À¸¥ÂÊÀÌ Àμö¸¦ ó¸®ÇÏ´Â º»Ã¼ÀÌ´Ù. ÀÌ ¿¹Á¦ÀÇ ¶÷´Ù Ç¥Çö½ÄÀº a¸¦ ¹Þ¾Æ a + 1À» ¸®ÅÏÇϴµ¥ => ¿¬»êÀÚ¸¦ "~°¡ µÈ´Ù"·Î ÀÐÀ¸¸é ½±´Ù. a => a + 1 ¶÷´Ù½ÄÀº "a°¡ a + 1ÀÌ µÈ´Ù" ·Î Àд´Ù. ÀÍ¸í ¸Þ¼µå¿Í ¶÷´Ù Ç¥Çö½ÄÀ» ºñ±³ÇØ º¸¸é È®½ÇÈ÷ ¶÷´Ù Ç¥Çö½ÄÀÌ ´õ ª´Ù.
delegate Å°¿öµå´Â »ç¶óÁö¸ç ¶÷´Ù½ÄÀ» ÀǹÌÇÏ´Â => ±âÈ£·Î ´ëüµÈ´Ù. Àμö
aÀÇ Å¸ÀÔÀ» ¹àÈ÷Áö ¾Ê¾Æµµ µ¨¸®°ÔÀÌÆ®ÀÇ Å¸ÀÔÀ¸·ÎºÎÅÍ Ãß·ÐÇÑ´Ù. ÀμöÀÇ Å¸ÀÔÀ» ¸í½ÃÀûÀ¸·Î
¹àÇôµµ »ó°ü¾øÁö¸¸ ÀÌ °æ¿ì´Â °ýÈ£µµ °°ÀÌ Àû¾î¾ß ÇÑ´Ù.
Dele d = (int a) => a + 1;
º»Ã¼ÀÇ Äڵ忡¼ return ¸í·É¹®ÀÌ »ý·«µÈ´Ù. ÀÍ¸í ¸Þ¼µå´Â return a + 1;°ú °°ÀÌ ¿ÏÀüÇÑ ¸í·É¹® ÇüÅ·Î
µ¿ÀÛÀ» ±â¼úÇϴµ¥ ºñÇØ ¶÷´Ù´Â a + 1 Ç¥Çö½Ä¸¸ ±â¼úÇÏ¸é µÈ´Ù.
returnÀ» ½áµµ »ó°üÀº ¾ø´Âµ¥ ÀÌ °æ¿ì ¸í·É¹®À» { } ·Î °¨½Î¾ß ÇÑ´Ù. ´Ù¾çÇÑ ¶÷´Ù½ÄÀ» ±¸°æÇØ º¸ÀÚ.
Lambdas |
½ÇÇà°á°ú |
using
System; delegate int
Dele1(int a, int b); delegate int
Dele2(); delegate
void Dele3(); class CSTest
{ static
void Main() { Dele1
d1 = (x, y) => x + y; int
b = d1(4, 5); Console.WriteLine("b
= " + b); Dele2
d2 = () => 1234; int
c = d2(); Console.WriteLine("c
= " + c); Dele3
d3 = () => { Console.WriteLine("¸í·É¹®À¸·Î µÈ ¶÷´Ù");
}; d3(); } } |
b = 9 c = 1234 ¸í·É¹®À¸·Î µÈ ¶÷´Ù |
Àμö°¡ µÎ °³ ÀÖÀ¸¸é => ¿ÞÂÊÀÇ Àμö ¸ñ·ÏÀ» °ýÈ£·Î °¨½Ñ´Ù. (x, y) => x + y ¶÷´Ù½ÄÀº x¿Í y¸¦ Àü´ÞÇÏ¸é ±× ÇÕÀ» ¸®ÅÏÇÑ´Ù´Â ¶æÀÌ´Ù. Àμö°¡ Çϳª»ÓÀÌ°í ÀμöÀÇ
ŸÀÔÀÌ ¾Ï½ÃÀûÀÏ ¶§´Â °ýÈ£¸¦ »ý·«ÇÒ ¼ö ÀÖ´Ù. Àμö°¡ ¾Æ¿¹ ¾øÀ» °æ¿ì ºó °ýÈ£¸¦ Àû´Â´Ù. º»Ã¼¿¡ Ç¥Çö½ÄÀÌ ¾Æ´Ñ ¸í·ÉÀÌ µé¾î ÀÖÀ» ¶§´Â ¿ìº¯À» { } ·Î °¨½Ñ´Ù. ¸í·É¹®ÀÇ °³¼ö¿¡ Á¦¾àÀº ¾øÁö¸¸ Åë»ó 1~3°³ Á¤µµ°¡ Àû´çÇÏ´Ù. ±× ÀÌ»óÀÇ ¸í·É¹®ÀÌ ÇÊ¿äÇÏ´Ù¸é º¹Àâµµ¸¸ Áõ°¡ÇÒ »Ó °£°á¼ºÀÌ ¶³¾îÁö¹Ç·Î ¾Æ¿¹ ¸Þ¼µå¸¦ Á¤ÀÇÇÏ´Â °ÍÀÌ ´õ ³´´Ù.
delegate Å°¿öµå, ÀμöÀÇ
ŸÀÔ, return ¹® µî Çü½ÄÀ» ¸ÂÃß±â À§ÇÑ ¹ø°Å·Î¿î °ÍÀ» Á¦°ÅÇÏ¿© ÀÍ¸í ¸Þ¼µå¸¦ ¾ÐÃàÇÑ °ÍÀÌ ¶÷´Ù½ÄÀÌ´Ù. ¶÷´Ù´Â Á¶°ÇÀ» Á¡°ËÇÏ´Â Äڵ带 Á¶°Ç½Ä ÇüÅÂÀÇ µ¥ÀÌÅÍó·³ ´Ù·ç¾î Äõ¸®¹®À» ÇÔÃàÀûÀ¸·Î Ç¥ÇöÇÑ´Ù. ÀÍ¸í ¸Þ¼µå¿¡ Àû¿ëµÇ´Â ±ÔÄ¢ÀÌ ¶÷´Ù Ç¥Çö½Ä¿¡µµ ´ëºÎºÐ ±×´ë·Î Àû¿ëµÈ´Ù. ÀμöÀÇ
°³¼ö³ª ŸÀÔ ÀÏÄ¡¼ºÀ» Á¡°ËÇÏ´Â ±ÔÄ¢Àº °ÅÀÇ µ¿ÀÏÇϸç ÀÚ½ÅÀ» Æ÷ÇÔÇÑ ¸Þ¼µåÀÇ Àμö³ª Áö¿ªº¯¼ö¸¦ ½Ä³»¿¡¼ ÂüÁ¶ÇÒ ¼ö ÀÖ´Â º¯¼ö ĸó ±â´Éµµ ¶È°°ÀÌ
Àû¿ëµÈ´Ù.