¹Ú½Ì(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À» ÀÌ¿ëÇØ¼ ÂüÁ¶Å¸ÀÔÀ¸·Î ¸¸µç ÈÄ °ªÅ¸ÀÔÀÇ °ªÀ» º¹»çÇÏ´Â °ÍÀÔ´Ï´Ù.
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°ÀÇ ÀúÀÚ:ÃÖ¿µ°ü |