¼Ò¼³°°ÀºC#  Á¦2°­ÀÇ Å¬·¡½ºÀÇ ±âº»¹è°æ  15. °ª¿¡ ÀÇÇÑ Àü´Þ  

 

 

2.15 °ª(Value)¿¡ ÀÇÇÑ Àü´Þ

 

 

¸Þ¼­µåÀÇ ÀμöÀü´ÞÀº °ªÅ¸ÀÔÀ¸·Î ¸Å°³º¯¼ö¿¡ ÀÇÇØ¼­ Àü´Þ µÉ ¶§¿¡´Â °ª¿¡ ÀÇÇÑ Àü´ÞÀ̶ó°í Ç¥ÇöÇÕ´Ï´Ù. ¿©·¯ºÐµµ ÀÌ¹Ì ¾Õ¿¡¼­ ¹è¿ü½À´Ï´Ù¸¸ À̰ÍÀº ¸Þ¼­µåÀÇ ¸Å°³º¯¼öÀÇ Àü´Þ¹æ½Ä¿¡µµ ÇØ´çµÇ´Â ºÎºÐÀÔ´Ï´Ù. º¸Åë ¸Þ¼­µåÀÇ ¸Å°³º¯¼ö¸¦ Ç¥ÇöÇÒ ¶§ Àμö, Parameter, ¸Å°³º¯¼ö¶ó°í Ç¥ÇöÀ» ÇÏÁÒ. ¹°·Ð, ÀüºÎ °°Àº ¿ë¾îµéÀÔ´Ï´Ù. ¹ø¿ª»óÀÇ ¾à°£ÀÇ Â÷ÀÌ´Â ÀÖÁö¸¸ °°Àº ¶æÀ¸·Î »ç¿ëµË´Ï´Ù.

 

Àμö Áï, ¸Å°³º¯¼ö(Parameter)°¡ ÇÏ´Â ÀÏÀº ¿ÜºÎÀÇ µ¥ÀÌÅ͸¦ ¸Þ¼­µåÀÇ ³»ºÎ·Î Àü´ÞÇÏ´Â ¿ªÇÒÀ» ÇÕ´Ï´Ù. ´ÙÀ½ ±×¸²Àº ¡®¸Þ¼­µåÀÇ ¸Å°³º¯¼ö¡¯ºÎºÐ¿¡¼­ Sum() ¸Þ¼­µå¸¦ ±¸ÇöÇÑ ±×¸²ÀÔ´Ï´Ù.

 

 

±×¸² 2.6 ¸Å°³º¯¼öÀÇ °ªÇÒ´ç ¿ø¸®

 

¿ì¸®´Â Sum(3,5)¸¦ »ç¿ëÇÔÀ¸·Î½á 8À̶ó´Â °á°ú¸¦ ¾òÀ» ¼ö ÀÖ¾ú½À´Ï´Ù. ±×·±µ¥ ¿©±â¼­ Çѹø »ý°¢ÇØ º¼¸¸ÇÑ °ÍÀº 3°ú 5°¡ µé¾î¿À¸é ¸Å°³º¯¼ö int x, int y´Â ¾îµð¿¡ Á¸ÀçÇϴ°¡ÀÇ ¹®Á¦ÀÔ´Ï´Ù. ´ç¿¬È÷ x, yÀÇ ¸Þ¸ð¸®´Â Sum() ¸Þ¼­µå ³»ºÎ¿¡ »õ·Î ¸¸µé¾îÁö°Ô µË´Ï´Ù. ±×¸®°í 3°ú 5¸¦ °¢°¢ ¹Þ¾Æ¼­ ±× ¼Ó¿¡ º¹»çÇØ¼­ ³Ö°Ô µÇ´Â °ÍÀÌÁÒ. ¸Å°³º¯¼ö¿¡ °ªÀÌ ÇÒ´çµÇ´Â ÀÌÄ¡(ìµöÈ)´Â °ªÅ¸ÀÔÀÇ ÇÒ´çÀÇ ¿ø¸®¿Í °°Àº ¹æ½ÄÀ¸·Î µ¿ÀÛÇÕ´Ï´Ù. ÀÌ·¯ÇÑ ¿ø¸®¸¦ ¾î·Á¿î ¸»·Î Call by Value¶ó°í ÇÏ´Â °ÍÀÔ´Ï´Ù. À̰ÍÀº ¾Õ Àý¿¡¼­ ¾ð±ÞÇÑ °ªÅ¸ÀÔÀÇ °ªº¹»çÀÇ ¿ø¸®¿¡ ÀÇÇØ¼­ µ¿ÀÛÇÕ´Ï´Ù.  x¿Í y¸Þ¸ð¸®¸¦ »õ·Î ¸¸µé°í ±× ¼Ó¿¡ °ªÀ» º¹»çÇØ ³Ö´Â ¹æ½ÄÀÌÁÒ. À̰ÍÀ» ¾à°£ º¯ÇüÇÏ¸é ´ÙÀ½°ú °°Àº ±×¸²À¸·Î ³ªÅ¸³¾ ¼ö ÀÖ½À´Ï´Ù.

 

±×¸² 2.7 ¸Å°³º¯¼ö °ªÀÇ ÇÒ´ç¿ø¸®2

 

ÀÌ ¹æ½ÄÀº a¿Í b¶ó´Â º¯¼ö¿¡ °ªÀ» Á÷Á¢ ÇÒ´çÇÏ°í ±×¸®°í x, y·Î °ªÀ» º¹»çÇÏ´Â ¹æ½ÄÀÔ´Ï´Ù. º¯¼öÀÇ ÇÒ´ç ¹ýÄ¢¿¡ ÀÇÇÏ¸é ´ç¿¬ÇÑ ¼Ò¸®ÀÔ´Ï´Ù. ´ç¿¬È÷ °ªÅ¸ÀÔÀº ¸Þ¸ð¸®ÀÇ °ªº¹»ç¸¦ ¿øÄ¢À¸·Î Çϱ⶧¹®¿¡ a¿Í bÀÇ ¸Þ¸ð¸®¿¡ ÀÖ´Â 3°ú 5¸¦ °¢°¢ ¸Þ¼­µå ³»ÀÇ ¸Þ¸ð¸® °ø°£ÀÎ x¿Í y·Î º¹»çÇÏ´Â °ÍÀÔ´Ï´Ù. °ªÅ¸ÀÔ(Value Type)À̶õ ¿ë¾îÀÇ Àǹ̵µ °ªÀÇ º¹»ç¶ó´Â °³³ä°ú °ü·ÃÀÌ ÀÖ½À´Ï´Ù.

 

C#¿¡¼­ÀÇ ¸Þ¼­µå°¡ È£ÃâµÉ ¶§ µðÆúÆ®·Î Àμö¸¦ ³Ñ±â´Â ±âº»ÀûÀÎ ¹æ¹ýÀº °ª(Value)À¸·Î ³Ñ±â´Â ¹æ½Ä Áï, Call By Value°¡ µË´Ï´Ù. ¿ì¼± °ª(Call By Value)À¸·Î Àμö°¡ ³Ñ¾î¿À´Ï À̰ÍÀ» Value Parameter¶ó°í ºÎ¸¨´Ï´Ù. ¿ì¸®°¡ ÀϹÝÀûÀ¸·Î ¸Þ¼­µå¸¦ È£ÃâÇϸé ÀÌ ¹æ½ÄÀ¸·Î °ªÀÌ ³Ñ¾î¿À°Ô µË´Ï´Ù. Áï, ¸Þ¼­µå°¡ È£ÃâµÇ¸é, ¸Þ¸ð¸®»ó¿¡ °¢°¢ÀÇ ¸Å°³º¯¼öµéÀ» À§ÇÑ »õ·Î¿î ÀúÀå°ø°£ÀÌ »ý±â°Ô µË´Ï´Ù. ±×¸®°í ¿ÜºÎ¿¡¼­ °ªÀ» º¹»çÇØ¼­ ºÒ·¯¿Í »õ·ÎÀÌ »ý±ä ¸Þ¸ð¸®¿¡ º¹»ç°¡ µÇ¾î ÀúÀåµÇ´Â °ÍÀÔ´Ï´Ù. ÀÌ·¸°Ô È£ÃâÇÏ´Â º¯¼ö¿¡ ÀúÀåµÈ °ªÀÇ º¹»çº»ÀÌ Àμö°ªÀ¸·Î Àü´Þ µÇ¹Ç·Î, ¸Þ¼­µå ¾ÈÀÇ Äڵ忡¼­ ÀμöÀÇ °ªÀ» º¯°æ½ÃÄѵµ È£ÃâÇÑ ÂÊÀÇ º¯¼öÀÇ °ªÀº ¿µÇâÀ» ¹ÞÁö ¾Ê½À´Ï´Ù. ¿¹Á¦¸¦ ÅëÇØ¼­ ÀÌ·¯ÇÑ Àǹ̸¦ Áõ¸íÇØ º¸µµ·Ï ÇϰڽÀ´Ï´Ù.

 

&

TestValue.cs

Ü ValueŸÀÔ ÀμöÀü´ÞÀÇ ¿¹Á¦

using System;

class TestValue{

         static void CallByVal(int x) {

                 x = 10000;

       }

            public static void Main() {

                 int x1 = 10;

                 CallByVal(x1);

                 Console.WriteLine("Call-By-Value: {0}", x1);

       }//main

}//class

C:\C#Example\02>csc TestValue.cs

C:\C#Example\02>TestValue

Call-By-Value: 10

 

¿¹Á¦ÀÇ Äڵ带 º¸½Ã¸é CallByVal() ¸Þ¼­µå°¡ ¿ÜºÎ·ÎºÎÅÍ ³Ñ¾î¿Â °ªÀ» 10000À¸·Î º¯°æ½Ã۰í ÀÖ½À´Ï´Ù. Main()¸Þ¼­µå¿¡¼­´Â CallByVal() ¸Þ¼­µå¸¦ È£ÃâÇÏ¿©, º¯¼ö x1ÀÇ °ª 10À» Àμö·Î ³Ñ°å½À´Ï´Ù. ÇÏÁö¸¸ °á°ú¿¡¼­ x1ÀÇ °ªÀº ±×´ë·Î 10À¸·Î º¯°æµÇÁö ¾ÊÀº °ÍÀ» È®ÀÎ ÇÒ ¼ö ÀÖ½À´Ï´Ù.

 

ÀÌ·¸°Ô µðÆúÆ® ¹æ½ÄÀÎ value·Î °ªÀ» Àü´ÞÇÏ°Ô µÇ¸é, CallByVal() ¸Þ¼­µåÀÇ ¸Å°³º¯¼öÀÎ x´Â ¿ÜºÎ·ÎºÎÅÍÀÇ °ª x1ÀÇ ¡®º¹»çº»¡¯À» ¸¸µé¾î ÀúÀåÇϰí, ±×°ÍÀ» ¸Þ¼­µå ³»ºÎ·Î ´øÁ®Áֱ⠶§¹®¿¡, ¸Þ¼­µå ³»ºÎ¿¡¼­ ¾Æ¹«¸® ±× °ªÀ» °¡Áö°í Àå³­À» Ä¡´õ¶óµµ º»·¡ÀÇ x1ÀÇ °ª¿¡´Â ¾Æ¹«·± ¿µÇâÀ» ³¢Ä¡Áö ¸øÇÏ´Â °ÍÀÔ´Ï´Ù.

 

¢Ñ »ý°¢ÇØ º¸±â

¸¸¾à ¸Å°³º¯¼ö°¡ °ªÅ¸ÀÔÀÌ ¾Æ´Ï¶ó ÂüÁ¶Å¸ÀÔÀ̶ó¸é ¾î¶»°Ô µÉ±î¿ä? ÂüÁ¶Å¸ÀÔµµ °á±¹¿¡´Â Call By ValueÇü½ÄÀ¸·Î ÂüÁ¶°ªÀ» º¹»çÇÏ°Ô µË´Ï´Ù. Áï, ÇØ½ÃÄڵ尪À» º¹»çÇÏ°Ô µÇ´Â °ÍÀÔ´Ï´Ù. ÇÏÁö¸¸ ÇØ½ÃÄڵ带 º¹»çÇÏ´õ¶óµµ ¸Þ¸ð¸®°¡ º¹»çµÇ´Â °ÍÀº ¾Æ´Õ´Ï´Ù. À̰ÍÀº ¾Õ Àý¿¡¼­ ¸í¹éÈ÷ ³íÇÏ°í ¿ÔÀ¸´Ï À̰Ϳ¡ ´ëÇØ ±Ã±ÝÇÏ½Ã¸é ¾Õ ÀýÀ» ´Ù½Ã Âü°íÇϽñ⠹ٶø´Ï´Ù.

 

ÂüÁ¶Å¸ÀÔµµ °á±¹¿¡´Â Call By ValueÇü½ÄÀ¸·Î ¿òÁ÷ÀÌÁö¸¸ ±× ³»ºÎ¿¡¼­ ÂüÁ¶¸¦ »ç¿ëÇϰí Àֱ⠶§¹®¿¡ Call By Referenceó·³ º¸ÀÏ »ÓÀÔ´Ï´Ù.



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