¼Ò¼³°°ÀºC#  Á¦5°­ÀÇ C#ÀÇ ´ÙÇü¼º  03. Boxing  

 

 

5.3 Boxing

 

¹Ú½Ì(Boxing)À̶õ °ªÅ¸ÀÔÀ» ÂüÁ¶Å¸ÀÔÀ¸·Î º¯È¯ÇÑ´Ù´Â ÀǹÌÀÔ´Ï´Ù. BoxingÀº int, double, char µîÀÇ °ªÅ¸ÀÔÀ» ¹¬½ÃÀûÀ¸·Î ÂüÁ¶Å¸ÀÔÀ¸·Î º¯È¯ÇÕ´Ï´Ù.  ¿©±â¼­ ¹¬½ÃÀûÀ̶ó ÇÔÀº ¿ì¸®°¡º°µµÀÇ Ç¥½Ã¸¦ ÇØÁÖÁö ¾Ê¾Æµµ ÀÚµ¿À¸·Î ÀϾ´Ù´Â °ÍÀÔ´Ï´Ù. À̰ÍÀÇ ÀÌÀ¯´Â ¾î¶² °ªÀ̵ç ÃÖ»óÀ§ °´Ã¼ÀÎ object·Î Çüº¯È¯ÀÌ ÀϾ±â ¶§¹®ÀÔ´Ï´Ù.

 

¿ì¸®°¡ ¾Ë°í ÀÖ´Â ´ëºÎºÐÀÇ µ¥ÀÌÅÍŸÀÔ Áï, int, double, char µîÀº Èü(Heap)ÀÌ ¾Æ´Ñ ½ºÅÃ(Stack)¿¡ ÀÚ¸®¸¦ Àâ½À´Ï´Ù. ÇÏÁö¸¸ °´Ã¼Ã³·³ À̵éÀ» ´Ù·ç°íÀÚ ÇÑ´Ù¸é ±× °ªÀÌ Èü(Heap)¿¡ ÀÚ¸®¸¦ Àâ°í ÀÖ¾î¾ß ÇÕ´Ï´Ù. ÀÌ·¸°Ô µû·Îµû·Î ÀÚ¸®¸¦ Àâ°í Àִ ŸÀÔµéÀ» È¿À²ÀûÀ¸·Î ÇÚµéÇϱâ¶õ ½±Áö°¡ ¾Ê½À´Ï´Ù. ±×·¡¼­ C#¿¡¼­´Â °ªÅ¸ÀÔÀ» °´Ã¼·Î ´Ù·ç±â À§Çؼ­ ¾à°£ÀÇ °íÂ÷¿øÀûÀÎ ±â¹ýÀ» »ç¿ëÇϰí Àִµ¥ ÀÌ ¹æ¹ýÀ» BoxingÀ̶ó°í ÇÕ´Ï´Ù.

 

½ºÅÃ(Stack)¿¡ ÀúÀåµÇ¾î ÀÖ´Â °ªÅ¸ÀÔÀÇ µ¥ÀÌÅÍ °ªÀ» CLRÀÌ °­Á¦·Î Èü(Heap)¿¡ µé¾î°¥ ¸¸ÇÑ ÀÛÀº »óÀÚ(Box)¸¦ ¸¸µì´Ï´Ù. ±×¸®°í ÈüÀÇ »óÀÚ¿¡ °ªÅ¸ÀÔÀÇ µ¥ÀÌÅÍ °ªÀ» º¹»çÇÏ´Â °ÍÀÔ´Ï´Ù. Áï, °ªÅ¸ÀÔÀ» °´Ã¼È­Çϱâ À§ÇÑ ¸Þ¸ð¸®¸¦ Èü¿¡ ¸¸µç ÈÄ, °ªÅ¸ÀÔ¿¡ µé¾î ÀÖ´Â °ªÀ» º¹»çÇÏ´Â °ÍÀÔ´Ï´Ù. ÀÌ Boxing¿¡ ´ëÇÑ ÀÚ¼¼ÇÑ °ÍµéÀº ¾Æ·¡ÀÇ ¿¹Á¦µéÀ» º¸¸é¼­ ¾Ë¾Æ º¸µµ·Ï ÇϰڽÀ´Ï´Ù.

 

&

BoxingTest1.cs

Ü BoxingÀ» Å×½ºÆ®Çϱâ À§ÇÑ ¿¹Á¦

using System;

class BoxingTest1 {

public static void Main() {

int p = 123;

object o = p; //BoxingÀÌ ÀϾ´Â °÷

Console.WriteLine(o);

      }

}

C:\C#Example\05>csc BoxingTest1.cs

C:\C#Example\05>BoxingTest1

123

 

À§ ¿¹Á¦¿¡¼­´Â °ªÅ¸ÀÔ º¯¼ö int p¸¦ ¼±¾ð Çß½À´Ï´Ù ÀÌ º¯¼ö¸¦ À§ÇÑ ¸Þ¸ð¸®´Â ½ºÅÃ(Stack)¿¡ ÇÒ´çµË´Ï´Ù. Áï, ½ºÅÿ¡ Á¸ÀçÇÏ´Â 4byte º¯¼öÀÔ´Ï´Ù. int p¸¦ System.Object ÇüÀ¸·Î »ç¿ëÇÏ·Á°í ÇÑ´Ù¸é CLRÀÌ ÀÌ º¯¼ö¸¦ BoxingÀ» ÀÌ¿ëÇØ¼­ ÂüÁ¶Å¸ÀÔÀ¸·Î ¸¸µç ÈÄ °ªÅ¸ÀÔÀÇ °ªÀ» º¹»çÇÏ´Â °ÍÀÔ´Ï´Ù.

 

¿¹Á¦¿¡¼­ ¸ÕÀú °ªÅ¸ÀÔ º¯¼ö int p¸¦ ¼±¾ðÇÏ°í °ªÀ» ÇÒ´çÇÏ¿´½À´Ï´Ù.

 

n                 int p = 123;

 

´ÙÀ½À¸·Î int °ªÀ» ¸ðµç ÇüÀÇ ÃÖ»óÀ§Å¸ÀÔ(Base Type)ÀÌ µÇ´Â System.Object ÇüÀ¸·Î Boxing º¯È¯À» ½ÃµµÇÕ´Ï´Ù.

 

n                 object o = p;

 

À̶§ ÀϾ´Â ¸Þ¸ð¸® »óÀÇ º¯È­¸¦ Çѹø ¾Ë¾Æº¸ÁÒ. ¸ÕÀú C# ÄÄÆÄÀÏ·¯°¡ Èü(Heap)À¸·Î Boxing ÇϰíÀÚ ÇÏ´Â µ¥ÀÌÅÍ Çü, Áï, ½ºÅÃ(Stack)¿¡ ÀÚ¸®Àâ°í ÀÖ´Â p¶ó´Â °ªÀ» °´Ã¼È­ÇÒ ¼ö ÀÖ´Â ¹Ú½º¸¦ Èü ¿µ¿ª¿¡ ¸¸µé¾î ÁÝ´Ï´Ù. ±× ÈÄ¿¡ »õ·Î »ý¼ºÇÑ ÀÌ ¹Ú½º¿¡ °ªÀ» Áý¾î ³Ö¾îÁÖ¸é ¸ðµç º¯È¯ÀÌ ³¡³ª°Ô µË´Ï´Ù. »õ·Î »ý¼ºµÈ ÂüÁ¶°ªÀº °´Ã¼ o°¡ °¡Áö°Ô µË´Ï´Ù.

 

 

±×¸² 5-2 Boxing º¯È¯

 

int p°¡ object o·Î º¯½ÅÀ» ÇÑ °ÍÀÔ´Ï´Ù. ±×¸®°í p¿¡ ÀÖ´Â °ª±îÁöµµ º¹»ç°¡ ÀÌ·ç¾îÁ® ¹¬½ÃÀûÀÎ BoxingÀÌ ÀÌ·ç¾îÁø °ÍÀÔ´Ï´Ù. ¾ÕÀÇ °á°ú¿¡¼­ º¼ ¼ö ÀÖµíÀÌ, objectŸÀÔÀÇ  º¯¼ö o´Â ¡®123¡¯À» Ãâ·ÂÇÕ´Ï´Ù.  ±×¸²À» º¸¸é ÀÌÇØ°¡ Àß µÉ °ÍÀÔ´Ï´Ù.

 

¢Ã BoxingÀÌ ÀÌ·ç¾îÁö´Â ¼ø¼­

q                °ªÅ¸ÀÔ º¯¼ö¸¦ °´Ã¼È­Çϱâ À§ÇÑ Èü(Heap) ¿µ¿ªÀÇ ¸Þ¸ð¸® »ý¼º. ÀÌ °ø°£À» Box¶ó ÇÔ.

q                p¿¡ ÀÖ´Â °ªÀ» Èü(Heap)¿¡ »ý¼ºÇÑ Box¿¡ º¹»ç

q                ÂüÁ¶Å¸ÀÔ º¯¼ö o¿¡ BoxÀÇ ÂüÁ¶¸¦ ÇÒ´ç



jabookÀúÀÚ¸íÇÔ
Á¦¸ñ:¼Ò¼³°°ÀºC# Á¦5°­ÀÇ
ÀúÀÚ:ÃÖ¿µ°ü