ref Ű¿öµå¸¦ ÀÌ¿ëÇÑ ÂüÁ¶¿¡¼ ¹Ýµå½Ã ÂüÁ¶ÇÒ º¯¼ö´Â ÃʱâÈ µÇ¾î ÀÖ¾î¾ß ÇÕ´Ï´Ù. ÇÏÁö¸¸, ¾îÂ÷ÇÇ ¸Þ¼µå ³»¿¡¼ ±× °ªÀ» ¹Ýµå½Ã ¼öÁ¤ÇÏ·Á°í ÇÑ´Ù¸é ±»ÀÌ ¿ÜºÎ¿¡¼ ÃʱâÈÇÒ Çʿ䰡 ¾øÁö ¾ÊÀ»±î¿ä? Áï, x1ÀÇ ÃʱⰪÀÌ ¹«¾ùÀ̵ç Ç×»ó ±× °ªÀº 10000À¸·Î ¹Ù²ï´Ù¸é, x1À» ÃʱâÈÇϴµ¥ º° Àǹ̰¡ ¾ø´Ù´Â °ÍÀÌÁÒ. ¹Ù·Î ÀÌ·¯ÇÑ °æ¿ì¸¦ À§Çؼ C#¿¡¼ Á¦°øÇÏ´Â °ÍÀÌ out Ű¿öµå¸¦ Á¦°øÇÕ´Ï´Ù.
|
¢Ã out Ű¿öµå |
|
q ÂüÁ¶¿¡ ÀÇÇÑ Àü´ÞÀ» ÇÒ ¶§ »ç¿ëÇϴ Ű¿öµå q ÂüÁ¶·Î °ªÀ» ³Ñ±æ ¶§ ÂüÁ¶ÇÒ ´ë»óÀº ÃʱâÈÇÒ ÇÊ¿ä´Â ¾ø´Ù. |
out Ű¿öµå¸¦ »ç¿ëÇϸé, À§¿Í °°Àº »óȲ¿¡¼ È£ÃâÇÏ´Â ÂÊÀÇ Àμö¸¦ ÃʱâÈÇÒ Çʿ䰡 ¾ø´Ù´Â °ÍÀÔ´Ï´Ù. À̰ÍÀ» ´Ù¸¥ ¸»·Î Çϸé, ÃʱâÈÀÇ °úÁ¤¿¡¼ »ý±â´Â ¾µµ¥¾ø´Â ¸Þ¸ð¸®ÀÇ ³¶ºñ¸¦ ¸·À» ¼ö ÀÖÀ¸¸ç ÀÛ¾÷À» ´Ü¼øÈ ½Ãų ¼ö ÀÖ´Ù´Â °ÍÀÔ´Ï´Ù. out Ű¿öµå¸¦ ÀÌ¿ëÇÑ ÂüÁ¶¿¹Á¦¿Í ref Ű¿öµå¸¦ ÀÌ¿ëÇÑ ÂüÁ¶¿¹Á¦¸¦ ÇÔ²² ºñ±³ÇØ º¸µµ·Ï ÇϰڽÀ´Ï´Ù.
|
& |
TestRef1.cs |
Ü ref·Î È£ÃâÇÒ ¶§ ¿¡·¯°¡ ¹ß»ýÇÏ´Â ¿¹Á¦ |
|
using System; class TestRef1{ static void CallByRef(ref int x) { x = 10000; } public static void Main() { int x1; //ÃʱâÈ ÇÏÁö ¾Ê¾ÒÀ½ CallByRef(ref x1); Console.WriteLine("Call-By-Reference: {0}", x1); } } | ||
|
C:\C#Example\02>csc TestRef1.cs TEstRef1.cs(8,17): error CS0165: ÇÒ´çµÇÁö ¾ÊÀº 'x1' Áö¿ª º¯¼ö¸¦ »ç¿ëÇß½À´Ï´Ù. | ||
¾Õ¿¡¼ »ç¿ëÇß´ø TestRef Ŭ·¡½º¸¦ Çѱºµ¥¸¸ °íÄ¡°í ±×´ë·Î »ç¿ëÇß½À´Ï´Ù. ±×¸®°í ÀÌ ¿¹Á¦´Â ¿¡·¯°¡ ¹ß»ýÇÔÀ» È®ÀÎÇÒ ¼ö ÀÖ½À´Ï´Ù.
n int x1;
intÇüÀÇ º¯¼ö x1À» ¼±¾ðÇϰí ÃʱâÈ´Â ½ÃÄÑ ³õÁö ¾Ê¾Ò±â ¶§¹®¿¡ ÄÄÆÄÀÏÀ» Çϸé, ¡®TestRef1.cs(8,17): error CS0165: ÇÒ´çµÇÁö ¾ÊÀº 'x1' Áö¿ª º¯¼ö¸¦ »ç¿ëÇß½À´Ï´Ù.¡¯ ¶ó´Â ¿¡·¯¸¦ ¹ß»ý½Ãŵ´Ï´Ù. ±×·³ À̰ÍÀ» out Ű¿öµå¸¦ ÀÌ¿ëÇÏ´Â ¹æ¹ýÀ¸·Î ½ÇÇàÇØº¸°Ú½À´Ï´Ù.
|
& |
TestOut.cs |
Ü outÀ¸·Î È£ÃâÇÏ´Â ¿¹Á¦ |
|
using System; class TestOut{ static void CallByRef(out int x) { x = 10000; } public static void Main() { int x1; CallByRef(out x1); Console.WriteLine("Call-By-Out: {0}", x1); } } | ||
|
C:\C#Example\02>TestOut C:\C#Example\02>TestOut Call-By-Out: 10000 | ||
¼Ò½º¸¦ º¸½Ã¸é À§ TestRef1.cs¿¹Á¦¿¡¼ ´ÜÁö ref Ű¿öµå¸¦ outÀ¸·Î ¹Ù²Ù¾î ÁØ °ÍÀ» È®ÀÎ ÇÒ ¼ö ÀÖ½À´Ï´Ù. ÀÌ·¸°Ô ÇÔÀ¸·Î ÇØ¼ ¿¡·¯°¡ ³ªÁö ¾Ê´Â °ÍÀ» È®ÀÎÇÒ ¼ö ÀÖ½À´Ï´Ù. ÀÌ¿Í °°ÀÌ ¸Þ¼µå¸¦ È£ÃâÇϱâ ÀÌÀü¿¡, ºÒ·¯¿Ã ŸÀÔÀÇ º¯¼ö³ª ÀνºÅϽº¸¦ »ç¿ëÇÒ Çʿ䰡 ¾ø´Ù¸é, ±×°ÍÀÇ Ãʱâȸ¦ »ý·«ÇÏ´Â °ÍÀÌ ¸Þ¸ð¸® °ü¸® Â÷¿ø¿¡¼ º¸´Ù È¿À²ÀûÀÏ °ÍÀÔ´Ï´Ù.
|
¢Ã ref ¿Í out Ű¿öµå |
|
q ref : ÂüÁ¶ÇÒ º¯¼ö´Â ¹Ýµå½Ã ÃʱâÈ µÇ¾î ÀÖ¾î¾ß ÇÑ´Ù. q out : ÂüÁ¶ÇÒ º¯¼ö°¡ ¹Ýµå½Ã ÃʱâÈ µÉ ÇÊ¿ä´Â ¾ø´Ù. |
»ç½Ç ref¿Í out Ű¿öµå´Â º°´Ù¸¥ Â÷À̰¡ ¾ø½À´Ï´Ù. µÑÀº ¾Æ¸¶ »çÃÌ Á¤µµ µÉ °ÍÀÔ´Ï´Ù. Ãʱâȸ¦ ÇØÁÖ´À³Ä ÇØÁÖÁö ¾Ê´À³ÄÀÇ Â÷À̸¸ ÀÖÀ» »Ó ÂüÁ¶¶ó´Â Ãø¸é¿¡¼´Â µ¿ÀÏÇÕ´Ï´Ù. out Ű¿öµå¿Í ref Ű¿öµå¸¦ »ç¿ëÇÏ´Â ¹æ½ÄÀ» Àß ±¸º°ÇϽñ⠹ٶø´Ï´Ù.
| jabookÀúÀÚ¸íÇÔ |
|
Á¦¸ñ:¼Ò¼³°°ÀºC# Á¦2°ÀÇ ÀúÀÚ:ÃÖ¿µ°ü |