È®Àå ¸Þ¼µåÀÇ ÀÌ·ÐÀûÀÎ ³»¿ëÀº ¾Æ·¡¿Í °°½À´Ï´Ù.
ÇнÀÇϽôµ¥ Âü°íÇϽñ⠹ٶø´Ï´Ù.
------------------------------------------------
È®Àå ¸Þ¼µå(Extension Method)´Â
static Å°¿öµå°¡ ºÙÀº Ŭ·¡½º¿¡ static ¸Þ¼µå·Î ¸¸µé¾î Áø´Ù.
È®Àå ¸Þ¼µåÀÇ Ã¹¹ø° ¸Å°³º¯¼ö¿¡
this Å°¿öµå¸¦ ÁöÁ¤ÇÏ¿© È®Àå ¸Þ¼µå¸¦ »ç¿ëÇÒ °³Ã¼ÀÇ Çü½ÄÀ» ÁöÁ¤ÇÒ ¼ö ÀÖ´Ù.
È®Àå ¸Þ¼µå¸¦ »ç¿ëÇÏ¸é °°Àº ³×ÀÓ½ºÆäÀ̽ºÀÇ ¸ðµç Ŭ·¡½º¿¡¼
ÇØ´ç È®Àå ¸Þ¼µå¸¦ È£ÃâÇؼ »ç¿ëÇÒ ¼ö Àִµ¥,
È®Àå ¸Þ¼µå´Â ÀÌ¹Ì ¿Ï¼ºµÇ¾î »ç¿ëÁßÀÎ ±âÁ¸ Çü½Ä¿¡ »õ
·Î¿î ¸Þ¼µå¸¦ Ãß°¡ÇÏ´Â ¹æ¹ýÀ¸·Î »ç¿ëµÈ´Ù.
È®Àå ¸Þ¼µåÀÇ ¸Þ¼µå ½Ã±×´Ïó´Â ¾Æ·¡¿Í °°ÀÌ Ç¥ÇöÀÌ µÇ´Âµ¥,
ù¹ø° ¸Å°³º¯¼ö´Â Á÷Á¢ ³Ñ°ÜÁÖ´Â °Ô ¾Æ´Ñ
Á¤Àû ¸Þ¼µå·Î È£ÃâµÉ ¶§ È£ÃâÇÒ °³Ã¼ÀÇ Çü½ÄÀ» Ç¥ÇöÇÑ´Ù.
public static void MethodName(this object obj, int i)
public static void MethodName(this string str, int i)
------------------------------------------------
±èÁ¤È£¼ºêID ´ÔÀÌ ¾²½Å ¿ø¹® ±ÛÀÔ´Ï´Ù.
class A { }
class B { public void EF(int i) { } }
class C { public void EF(object obj) { } }
static class E
{
public static void EF(this object obj, int i) { }
public static void EF(this object obj, string s) { }
}
class Program
{
static void Main(string[] args)
{
A a = new A(); a.EF(10); a.EF("¾È³ç");
B b = new B(); b.EF(100); b.EF("¾È³ç");
C c = new C(); c.EF(1000); c.EF("¾È³ç");
}
À§ ¼Ò½º¿¡¼ b°¡ 100À» È£ÃâÇÏ´Â °÷Àº ÀÚ½ÅÀÇ BŬ·¡½ºÀÌ°í
¾È³çÀ» È£ÃâÇÏ´Â °÷Àº E Ŭ·¡½ºÀε¥
±×·³ EŬ·¡½ºÀÇ this object objÀÇ ¿ªÇÒÀº ¹«¾ùÀΰ¡¿ä?
ÀÌ Å°¿öµå°¡ È®Àå¸Þ¼µåÀÇ ¾à¼ÓµÈ Å°¿öµåÀΰ¡¿ä?
±×¸®°í ¾î¶»°Ô Çؼ®ÇÏ¸é µÇ³ª¿ä?
|