ÂüÁ¶Å¸ÀÔ(Reference Type)Àº °ªÅ¸ÀÔ°ú ´Þ¸® º¯¼ö¸¦ ¼±¾ðÇÏ´õ¶óµµ ¸Þ¸ð¸®°¡ »ý¼ºÀÌ µÇÁö ¾Ê½À´Ï´Ù. ÀÌ ¸»Àº ÂüÁ¶Å¸ÀÔÀ¸·Î º¯¼ö¸¦ ¼±¾ðÇßÀ» ¶§ ±× º¯¼ö¿¡´Â ¡®¾Æ¹«°Íµµ ¾ø´Ù¡¯ °¡ µÇ´Â °ÍÀÔ´Ï´Ù. ±×¸®°í ¸Þ¸ð¸®¸¦ »ý¼ºÇØ ÁÖ´Â ¼ø°£¿¡ ºñ·Î¼Ò ÂüÁ¶Å¸ÀÔÀÇ º¯¼ö¿¡ °ªÀ» °¡Áö°Ô µÇ´Â °ÍÀÔ´Ï´Ù. Áï, ÂüÁ¶Å¸ÀÔÀº º¯¼öÀÇ ¼±¾ð°ú ¸Þ¸ð¸®ÀÇ »ý¼ºÀÌ ¿ÏÀüÈ÷ ºÐ¸® µÇ¾î ÀÖ´Ù°í ¸»ÇÒ ¼ö ÀÖ½À´Ï´Ù.
´ëÇ¥ÀûÀÎ ÂüÁ¶Å¸ÀÔÀº ¿©·¯ºÐÀÌ ¼ö¾øÀÌ »ç¿ëÇϴ Ŭ·¡½ºÀÔ´Ï´Ù. ´ÙÀ½ÀÇ ¿¹Á¦´Â ´Ü¼øÈ÷ Ŭ·¡½ºÀÇ ¼±¾ð°ú ¸Þ¸ð¸®ÀÇ »ý¼ººÎºÐ¸¸À» º¸¿© ÁÖ°í ÀÖ½À´Ï´Ù.
|
& |
RefTest.cs |
Ü Å¬·¡½º ÂüÁ¶Å¸ÀÔÀ» ¾Ë¾Æº¸±â À§ÇÑ ¿¹Á¦ |
|
class RefSample{ public int mycom = 0 ; public int youcom = 0 ; } public class RefSampleMain{ public static void Main(){ RefSample rs = null;//º¯¼ö ¼±¾ð rs = new RefSample();//¸Þ¸ð¸® »ý¼º } } | ||
|
C:\02>csc RefTest.cs C:\02>RefTest | ||
º¯¼öÀÇ ¼±¾ðºÎºÐÀ» º¸½Ã¸é ºÐ¸í ÀÚ½ÅÀÌ ¾Æ¹«°Íµµ ¾ø´Ù´Â nullÀ» ¸í½ÃÇϰí ÀÖ½À´Ï´Ù. ±×¸®°í³ ÈÄ¿¡¾ß ºñ·Î¼Ò new ¿¬»êÀÚ¸¦ ÀÌ¿ëÇÏ¿© ¸Þ¸ð¸®¸¦ »ý¼ºÇϰí ÀÖ½À´Ï´Ù. ±×·±µ¥ ¿©±â¼ Çϳª Áß¿äÇÏ°Ô ´ëµÎµÇ´Â °ÍÀº ¹Ù·Î rs¿¡ ¹«¾ùÀÌ µé¾î ÀֳĴ °ÍÀÔ´Ï´Ù. ÂüÁ¶Å¸ÀÔÀÇ º¯¼ö¿¡ ¹«¾ùÀÌ µé¾î ÀÖÀ»±î¿ä? ±× ÇØ´äÀº ¸Þ¸ð¸®ÀÇ ÁÖ¼Ò°¡ µé¾î ÀÖ´Â °ÍÀÌ ¾Æ´Ï¶ó ¸Þ¸ð¸® ÁÖ¼Ò¿¡ ´ëÇÑ ÂüÁ¶°ªÀÌ µé¾î ÀÖ½À´Ï´Ù.
|
Áß¿ä!! ¢Ã ÂüÁ¶Å¸ÀÔ(Reference Type) |
|
q ÂüÁ¶Å¸ÀÔÀÇ º¯¼ö¿¡´Â ÁÖ¼Ò¿¡ ´ëÇÑ ÂüÁ¶°ªÀÌ µé¾î ÀÖ´Ù. |
±×·¸´Ù¸é ÁÖ¼Ò¿¡ ´ëÇÑ ÂüÁ¶°ªÀ̶õ ¹«¾ùÀϱî¿ä? ´ÙÀ½ÀÇ ±×¸²À» Çѹø »ìÆì º¸½Ã±â ¹Ù¶ø´Ï´Ù.

±×¸² 2-4 ÂüÁ¶Å¸ÀÔÀÇ ¸Þ¸ð¸® »ý¼º ¼ø¼
CLRÀÇ Èü(Heap) ¸Þ¸ð¸® °ø°£ ³»¿¡ rs¶ó´Â °´Ã¼ÀÇ ¸Þ¸ð¸®°¡ »ý¼ºµÉ °ÍÀÔ´Ï´Ù. Èü ¸Þ¸ð¸®¿¡ »ý¼ºµÈ rs´Â ¸Þ¸ð¸®ÀÇ ÁÖ¼Ò¸¦ °¡Á®¾ß ±× ¸Þ¸ð¸®ÀÇ ÁÖÀÎÀÌ µÉ ¼ö ÀÖÀ» °ÍÀÔ´Ï´Ù. À§ÀÇ ±×¸²¿¡¼ º»´Ù¸é new RefSample() ÇÏ´Â ¼ø°£¿¡ ºÐ¸í rs¿¡ ÁÖ¼Ò¸¦ ³Ñ°Ü ÁÖ¸®¶ó »ý°¢µË´Ï´Ù. ÇÏÁö¸¸ À̰ÍÀº °ªÅ¸ÀÔ¿¡¼³ª °¡´ÉÇÑ ÀÏÀÔ´Ï´Ù. ÀϹÝÀûÀÎ ÂüÁ¶Å¸ÀÔÀº ÇѴܰ踦 ´õ °ÅÄ¡°Ô µË´Ï´Ù. À̰ÍÀÌ ¹Ù·Î ÂüÁ¶¶ó´Â ¸»À» ¸¸µé°Ô µÇ´Â °ÍÀÔ´Ï´Ù. ´ÙÀ½ÀÇ ±×¸²Àº ½ÇÁ¦ ¸Þ¸ð¸® »óÀÇ ÂüÁ¶°¡ ÀÌ·ç¾îÁö´Â ±¸Á¶¸¦ º¸¿© ÁÖ°í ÀÖ½À´Ï´Ù.

|
¢Ñ ÂüÁ¶Å¸ÀÔÀÇ ¼±¾ð°ú ¸Þ¸ð¸® ÇÒ´ç |
ÂüÁ¶Å¸ÀÔÀÇ º¯¼ö¸¦ ¼±¾ðÇÒ ¶§ new¸¦ ÇÏÁö ¾ÊÀ¸¸é ¸Þ¸ð¸®°¡ »ý¼ºµÇÁö ¾Ê½À´Ï´Ù. ÇÏÁö¸¸ ÂüÁ¶Å¸ÀÔÀÇ º¯¼ö ¼±¾ðÀÚü´Â ÂüÁ¶°ª ÀÚü¸¦ ´ãÀ» ¸Þ¸ð¸®´Â È®º¸ÇÏ°Ô µË´Ï´Ù. Áï, 4¹ÙÀÌÆ®ÀÇ Á¤¼öÇü ÂüÁ¶°ªÀ» ´ãÀ» º¯¼ö´Â ¸Þ¸ð¸®¸¦ ½ºÅÿ¡ ÇÒ´çÇÏ°í °´Ã¼ ÀÚüÀÇ ¸Þ¸ð¸®´Â ¾ÆÁ÷ Èü¿¡ »ý¼ºÇÏÁö ¾Ê´Â´Ù´Â ÀǹÌÀÔ´Ï´Ù. °á·ÐÀûÀ¸·Î ÂüÁ¶Å¸ÀÔÀÇ º¯¼ö¸¸ ¼±¾ðÇÑ´Ù¸é ½ºÅÿ¡ ÂüÁ¶°ªÀ» ´ãÀ» ¸Þ¸ð¸®°¡ »ý¼ºµË´Ï´Ù. ÇÏÁö¸¸ ÂüÁ¶°ª ÀÚü´Â nullÀ̸ç new¸¦ ÇÏ´Â ¼ø°£ Èü¿¡ °´Ã¼ÀÇ ¸Þ¸ð¸®°¡ ÇÒ´ç µÇ¸ç Èü¿¡ ÇÒ´çµÈ ¸Þ¸ð¸®ÀÇ ÂüÁ¶°ªÀÌ ½ºÅÃÀÇ ÂüÁ¶º¯¼ö¿¡ null ´ë½Å µé¾î°¡´Â °ÍÀÔ´Ï´Ù. |
ÀÓÀÇ·Î °´Ã¼ 2°³(rs1, rs2)¸¦ »ý¼ºÇÑ ÇÏ¿´½À´Ï´Ù. ±×¸®°í ±× °´Ã¼°¡ »ý¼ºµÉ ¶§ÀÇ ½ÇÁ¦ÀÇ ¸Þ¸ð¸®´Â À妽º Å×À̺í(Index Table)¿¡¼ »õ·Î¿î ¹øÈ£¸¦ ÇÒ´ç ¹Þ°Ô µË´Ï´Ù. À̰ÍÀ» °´Ã¼ÀÇ ÇØ½ÃÄÚµå¶ó°í Çϸç ÀÌ ÇØ½ÃÄÚµå´Â CLR³»¿¡ ±× °´Ã¼¸¦ ±¸ºÐÇÒ ¼ö ÀÖ´Â À¯ÀÏÇÑ Å°°¡ µÇ´Â °ÍÀÔ´Ï´Ù. °á±¹, °´Ã¼ º¯¼ö rs1°ú rs2°¡ °¡Áö´Â °ªÀº ÇØ½ÃÄÚµåÀÇ ¹øÈ£¸¦ °®°Ô µÈ´Ù´Â °ÍÀÔ´Ï´Ù. ÂüÁ¶Å¸ÀÔÀ̶ó´Â ¸» ±× ÀÚü°¡ Index Table¿¡¼ ÇѹøÀÇ ÂüÁ¶¸¦ ´õ °ÅÄ¡°Ú´Ù´Â °ÍÀÌ µË´Ï´Ù.
ÂüÁ¶(Reference) ÇÒ´ç
´ÙÀ½°ú °°Àº °æ¿ì¸¦ Çѹø »ý°¢ÇØ º¸½Ã±â ¹Ù¶ø´Ï´Ù. ÂüÁ¶°ªÀ» ´Ù¸¥ °÷¿¡ ÇÒ´ç ÇßÀ» ¶§ ÂüÁ¶°ª ÀÚü(ÇØ½ÃÄÚµå)´Â °ªº¹»ç¸¦ ÇÒ ¼ö ÀÖÁö¸¸ ÂüÁ¶°ªÀÌ °¡Áö´Â ³»ºÎÀÇ ¸Þ¸ð¸®ÀÇ ³»¿ëÀÌ º¹»ç µÇ´Â °ÍÀº ¾Æ´Õ´Ï´Ù.
n RefSample rs1 = new RefSample();//rs1ÀÇ °ªÀº 10001
n RefSample jane = rs1;//janeÀÇ °ªÀº 10001ÀÌ µÈ´Ù.
ÀÌ ¿¹¹®¿¡¼ ¿ì¸®´Â rs1¿¡ 10001ÀÇ ÇØ½ÃÄڵ尪ÀÌ µé¾î ÀÖ´Ù°í »ý°¢ÇÏÁÒ. ±×¸®°í À§ÀÇ ±×¸²¿¡¼¿Í °°ÀÌ 10001ÀÇ ¸Þ¸ð¸®´Â FFFF:07CA°¡ µÉ °ÍÀÔ´Ï´Ù. ºÐ¸í rs1¿¡´Â 10001ÀÌ µé¾î ÀÖ°í 10001Àº FFFF:07CA¸¦ °¡¸£Å°°í ÀÖ½À´Ï´Ù. rs1ÀÇ ÂüÁ¶°ªÀ» jane¿¡ °ªº¹»ç¸¦ ÇÏ¸é ¾î¶»°Ô µÉ±î¿ä? jane¿¡´Â ´ç¿¬È÷ 10001ÀÇ °ªÀÌ µé¾î°¡°Ô µË´Ï´Ù. ±×·¸´Ù¸é janeµµ ¸Þ¸ð¸® FFFF:07CA¸¦ °¡¸£Å°Áö ¾Ê°Ú½À´Ï±î! ¾ÆÁÖ ´ç¿¬ÇÑ ¼Ò¸®ÁÒ. ±×·¡¼ °´Ã¼¸¦ ´Ù¸¥ °÷¿¡ ÇÒ´çÇßÀ» ¶§´Â ÂüÁ¶°ªÀ» ¾ò´Â °ÍÀÌÁö ¸Þ¸ð¸®ÀÇ ³»¿ëÀÌ º¹»çµÇ´Â °ÍÀÌ ¾Æ´Ï¶ó´Â °ÍÀÔ´Ï´Ù.
jane = rs1Àº °ª¿¡ ÀÇÇÑ Àü´ÞÀÌ µÇ¾úÁö¸¸ rs1 ³»¿¡ µé¾î ÀÖ´Â °Í ÀÚü°¡ ÂüÁ¶°ªÀ̱⠶§¹®¿¡ ÂüÁ¶°ªÀ» ¾Æ¹«¸® º¹»çÇØµµ Àý´ë ¸Þ¸ð¸®ÀÇ ³»¿ëÀº º¹»çµÇÁö ¾Ê´Â´Ù´Â °ÍÀÔ´Ï´Ù.
±×¸®°í ¿©·¯ºÐÀÌ ÇѰ¡Áö Àذí Áö³ª°¡½Ã´Â °ÍÀÌ ÀÖ½À´Ï´Ù. RefSample jane¿¡¼ janeÀº Èü¿¡ ¸Þ¸ð¸®µµ »ý¼ºÇÏÁö ¾Ê°í ÀÖÁö ¾Ê½À´Ï±î? ±×·¯´Ï ¸Þ¸ð¸®Â÷¿øÀÇ °ª º¹»ç¸¦ ÇÒ Áغñ°¡ µÇ¾îÀÖÁö ¾ÊÀº °ÍÀ» ´À³¢½Ç ¼ö ÀÖÀ» °Ì´Ï´Ù. janeÀº ÇØ½ÃÄڵ尪À» ÀúÀåÇÒ ¼ö ÀÖ´Â ¸Þ¸ð¸®¸¦ »ý¼º ÇÑ ÈÄ ÇØ½ÃÄڵ尪¸¸À» ³Ñ°Ü ¹Þ°Ú´Ù´Â °ÍÀÌÁö¿ä. Áï, ÇØ½ÃÄÚµå °ªº¹»ç¸¦ ÇÏ´Â °ÍÀÌ µË´Ï´Ù. ±×¸®°í ¸¸¾à ¿©·¯ºÐÀÌ Æ¯Á¤ °´Ã¼ÀÇ ÇØ½ÃÄڵ带 °¡Áö°í ÀÖ´Ù¸é ±× °´Ã¼ÀÇ ¸ðµç ±â´ÉÀ» ÀüºÎ »ç¿ëÇÒ ¼ö ÀÖ´Ù´Â °Íµµ ÀØÁö ¸¶½Ã±â ¹Ù¶ø´Ï´Ù.
| jabookÀúÀÚ¸íÇÔ |
|
Á¦¸ñ:¼Ò¼³°°ÀºC# Á¦2°ÀÇ ÀúÀÚ:ÃÖ¿µ°ü |