¸â¹ö¸¦ ¿ÜºÎ¿¡¼ ¸¶À½´ë·Î ÀÐ°í ¾µ ¼ö ÀÖ´Ù¸é ±ÔÄ¢¿¡ ¸ÂÁö ¾Ê´Â °ªÀÌ µé¾î¿Í ¹«°á¼ºÀÌ Æı«µÈ´Ù. ¹«°á¼ºÀÌ ÈÑ¼ÕµÈ °´Ã¼´Â Á¦´ë·Î µ¿ÀÛÇÏÁö ¾ÊÀ» »Ó´õ·¯ ¾ðÁ¦ ¸»½éÀ» ÀÏÀ¸Å³Áö ¾Ë ¼ö ¾ø¾î À§ÇèÇÏ´Ù. ±×·¡¼ ¾×¼¼½º ÁöÁ¤ÀÚ·Î ÁÖ¿ä ¸â¹ö¸¦ ¿ÜºÎ·ÎºÎÅÍ º¸È£ÇÑ´Ù.
Time Ŭ·¡½ºÀÇ hour, min, secÀº À¯È¿ÇÑ ¹üÀ§°¡ ¸í¹éÇÏ´Ù. 36½Ã 80ºÐÀº À߸øµÈ Á¤º¸À̸ç ÀÌ·± °ªÀ» ´ëÀÔÇÏÁö ¾Êµµ·Ï ÁÖ¿ä Çʵ带 ¼û°Ü¾ß ÇÑ´Ù. ´ë½Å Çʵ带 ¾×¼¼½ºÇÏ´Â Get/Set ¸Þ¼µå¸¸ ¿ÜºÎ·Î °ø°³ÇÑ´Ù. ´ÙÀ½ ¿¹Á¦´Â ÀÌ ¹æ¹ýÀ¸·Î Time Ŭ·¡½º¸¦ ÀÛ¼ºÇÑ °ÍÀÌ´Ù.
TimeGetSet |
|
using System;
class Time { private int hour, min, sec; public Time(int h, int m, int s) { SetHour(h); SetMin(m); SetSec(s); } public int GetHour() { return hour; } public void SetHour(int aHour) { if (aHour < 24) hour = aHour; } public int GetMin() { return min; } public void SetMin(int aMin) { if (aMin < 60) min = aMin; } public int GetSec() { return sec; } public void SetSec(int aSec) { if (aSec < 60) sec = aSec; } public void OutTime() { Console.WriteLine($"ÇöÀç ½Ã°£Àº {hour}½Ã {min}ºÐ {sec}ÃÊÀÌ´Ù."); } }
class CSTest { static void Main() { Time Now; Now = new Time(12, 34, 56); Now.OutTime(); Now.SetHour(55); Now.OutTime(); Now.SetMin(55); Now.OutTime(); } } |
|
½ÇÇà°á°ú |
ÇöÀç ½Ã°£Àº 12½Ã 34ºÐ 56ÃÊÀÌ´Ù. ÇöÀç ½Ã°£Àº 12½Ã 34ºÐ 56ÃÊÀÌ´Ù. ÇöÀç ½Ã°£Àº 12½Ã 55ºÐ 56ÃÊÀÌ´Ù. |
Çʵå´Â private·Î ¼û±â°í °¢ Çʵ带 ÀÐ°í ¾²´Â Get/Set ¸Þ¼µå¸¸ °ø°³ÇÑ´Ù. Get ¸Þ¼µå´Â Çʵ尪À» Àо ÁÖ°í Set ¸Þ¼µå´Â Á¶°ÇÀ» Á¡°ËÇÏ¿© Á¤»óÀûÀÎ °ª¸¸ ¹Þ¾ÆµéÀδÙ. Main¿¡¼ Time °´Ã¼¸¦ »ý¼ºÇÑ ÈÄ ½Ã°£¿¡ 55¸¦ ´ëÀÔÇßÀ¸³ª º¯°æµÇÁö ¾Ê´Â´Ù. SetHour ¸Þ¼µå´Â ½Ã°£ÀÌ 24 ÃÊ°úÀÌ¸é ¹«ÀÚºñÇÏ°Ô ¾Ã¾î ¹ö¸°´Ù. SetMin(55)´Â À¯È¿ÇÑ °ªÀÌ¾î¼ 55ºÐÀ¸·Î º¯°æµÈ´Ù.
¸Þ¼µå´Â ¿ÜºÎ·Î °ø°³µÇ´õ¶óµµ Àμö¸¦ Á¡°ËÇÏ¿© ¾û¶×ÇÑ °ªÀº °ÅÀýÇÏ°í ¿øÇÏ´Â °ª¸¸ ¼±ÅÃÀûÀ¸·Î ´ëÀÔÇÏ¿© °´Ã¼ÀÇ ¾ÈÀü¼ºÀ» ÁöŲ´Ù. »ý¼ºÀÚµµ Á÷Á¢ ´ëÀÔÇÏÁö ¾Ê°í Set ¸Þ¼µå¸¦ È£ÃâÇÏ¿© ÃʱâÈÇÒ ¶§ºÎÅÍ À¯È¿¼ºÀ» Á¡°ËÇÑ´Ù. Çʵ带 º¸È£ÇÏ´Â ¸ñÀûÀº ´Þ¼ºÇßÁö¸¸ Çʵå Çϳª´ç ¸Þ¼µå¸¦ µÎ °³¾¿ ¸¸µé±â´Â ¹ø°Å·Ó´Ù. ±×·¡¼ C#Àº ÀÌ·± Get/Set ¸Þ¼µåÀÇ ½ÖÀ» ÄÄÆÄÀÏ·¯°¡ ´ë½Å »ý¼ºÇÏ´Â ÇÁ·ÎÆÛƼ¸¦ Á¦°øÇÑ´Ù. ±âº» Çü½ÄÀº ´ÙÀ½°ú °°´Ù.
ÁöÁ¤ÀÚ Å¸ÀÔ À̸§ {
get { return °ª; }
set { °ª º¯°æ; }
}
Çʵå¿Í À¯»çÇ쵂 { } ºí·Ï ¾È¿¡ get, set Á¢±ÙÀÚ(Accessor) ºí·ÏÀ» Ãß°¡·Î °¡Áø´Ù. get ºí·ÏÀº Çʵ带 Àоî ÁÖ°í set ºí·ÏÀº Çʵ带 º¯°æÇÑ´Ù. ÇÁ·ÎÆÛƼ ÂüÁ¶¹®Àº get, set Á¢±ÙÀÚ È£Ãâ¹®À¸·Î ¹Ù²ï´Ù. ÇÁ·ÎÆÛƼ¸¦ ÀÐÀ¸¸é get Á¢±ÙÀÚ¸¦ È£ÃâÇÏ°í °ªÀ» ´ëÀÔÇϸé set Á¢±ÙÀÚ¸¦ È£ÃâÇÑ´Ù. ÇÁ·ÎÆÛƼ¿¡ ´ëÀԵǴ °ª, Áï ´ëÀÔ ¿¬»êÀÚÀÇ ¿ìº¯°ªÀº value¶ó´Â À̸§ÀÇ ¾Ï½ÃÀû Àμö·Î set Á¢±ÙÀÚ¿¡°Ô Àü´ÞµÈ´Ù.
ÇÁ·ÎÆÛƼ´Â ¸Þ¼µåÀÇ ¸ðµç ÁöÁ¤ÀÚ¸¦ ºÙÀÏ ¼ö ÀÖ´Ù. ¼û±æ ¼öµµ ÀÖ°í Á¤ÀûÀ¸·Î ¼±¾ðÇÏ¿© °øÀ¯ÇÒ ¼öµµ ÀÖ´Ù. Get/Set ¸Þ¼µå¿Í ¸ñÀûÀº °°Áö¸¸ ¾ð¾î¿¡ ÀÇÇØ Á¤ÇüÈµÇ¾î °£°áÇÏ°í »ç¿ëÇϱ⵵ Æí¸®ÇÏ´Ù. ¾Õ ¿¹Á¦¸¦ ÇÁ·ÎÆÛƼ·Î ¹Ù²ã º¸ÀÚ.
TimeProperty |
using System;
class Time { private int hour, min, sec; public Time(int h, int m, int s) { Hour = h; Min = m; Sec = s; } public int Hour { get { return hour; } set { if (value < 24) hour = value; } } public int Min { get { return min; } set { if (value < 60) min = value; } } public int Sec { get { return sec; } set { if (value < 60) sec = value; } } public void OutTime() { Console.WriteLine($"ÇöÀç ½Ã°£Àº {hour}½Ã {min}ºÐ {sec}ÃÊÀÌ´Ù."); } }
class CSTest { static void Main() { Time Now; Now = new Time(12, 34, 56); Now.OutTime(); Now.Hour =55; Now.OutTime(); Now.Min = 55; Now.OutTime(); } } |
Get/Set ¸Þ¼µå¸¦ Á¦°ÅÇÑ ´ë½Å Hour, Min, Sec ÇÁ·ÎÆÛƼ¸¦ Ãß°¡Çß´Ù. Çʵå¿Í °°Àº À̸§À» ¾µ ¼ö´Â ¾ø¾î Çʵå¸íÀÇ Ã¹ ±ÛÀÚ¸¦ ´ë¹®ÀÚ·Î ¹Ù²Û ¸íĪÀ» »ç¿ëÇÑ´Ù. ÇÁ·ÎÆÛƼ°¡ ¼û°ÜÁø ÇʵåÀÇ °ªÀ» ´ë½Å ¾×¼¼½ºÇ쵂 Á¶°Ç¿¡ ¸Â´Â °ª¸¸ ¹Þ¾Æµé¿© °´Ã¼ÀÇ ¹«°á¼ºÀ» ÁöŲ´Ù. Hour ÇÁ·ÎÆÛƼÀÇ set Á¢±ÙÀÚ´Â 24 ÃÊ°úÀÇ °ªÀ» °ÅºÎÇϸç Min, SecÀÇ set Á¢±ÙÀÚ´Â 60 ÃÊ°úÀÇ °ªÀ» ÀÎÁ¤ÇÏÁö ¾Ê´Â´Ù.
°´Ã¼¸¦ »ç¿ëÇÏ´Â ÂÊ¿¡¼´Â ÇÁ·ÎÆÛƼ¸¦ Çʵåó·³ Àаųª ´ëÀÔÇÑ´Ù. Now.Hour ÇÁ·ÎÆÛƼ¸¦ ÀÐÀ¸¸é À̶§ HourÀÇ get Á¢±ÙÀÚ¸¦ È£ÃâÇÑ´Ù. Now.Hour = 55; ¹®À¸·Î ÇÁ·ÎÆÛƼ¿¡ °ªÀ» ´ëÀÔÇϸç À̶§ HourÀÇ set Á¢±ÙÀÚ¸¦ È£ÃâÇÑ´Ù. ´ëÀÔ½ÄÀÇ ¿ìº¯ÀÎ 55´Â setÀÇ ¾Ï½ÃÀû Àμö value·Î Àü´ÞµÈ´Ù.
55´Â À¯È¿ÇÑ ½Ã°£°ªÀÌ ¾Æ´Ï¾î¼ ´ëÀÔÀÌ °ÅÀýµÈ´Ù. Now.SetHour(55);¿Í Now.Hour = 55;´Â º° Â÷ÀÌ°¡ ¾ø¾î º¸ÀÌ¸ç ½ÇÁ¦ ½ÇÇàµÇ´Â Äڵ嵵 °°´Ù.
Çʵ带 °ø°³ÇÏ´Â ¹æ¹ýÀ̳ª Get/Set ¸Þ¼µå¿¡ ºñÇØ ÇÁ·ÎÆÛƼ°¡ ¾î¶² ÀåÁ¡À» Á¦°øÇÏ´ÂÁö, ¶Ç ´Ù¸¥ Ư¡Àº ¹«¾ùÀÎÁö Á¤¸®ÇØ º¸ÀÚ.
l ÇÁ·ÎÆÛƼ´Â ¸Þ¼µåÀÌÁö¸¸ °Ñ¿¡¼ º¸±â¿¡´Â Çʵåó·³ »ý°å´Ù. È£Ãâ¹®ÀÌ ¾Æ´Ñ ÀÐ°í ¾²´Â ÇüÅ¿©¼ ÂüÁ¶¹®ÀÌ °£°áÇÏ´Ù. ½Ã°£À» 1 Áõ°¡½Ãų ¶§ Get/Set ¸Þ¼µåÀÇ ÄÚµå´Â ´ÙÀ½°ú °°´Ù.
Now.SetHour(Now.GetHour() + 1);
GetHour ¸Þ¼µå·Î ÇöÀç°ªÀ» Àаí 1À» ´õÇØ SetHour ¸Þ¼µå¸¦ ´Ù½Ã È£ÃâÇÑ´Ù. ±æÀ̵µ ±æ°í °ýÈ£°¡ ¿©·µÀ̶ó ŸÀÌÇÁÇϱ⠹ø°Å·Ó´Ù. ÇÁ·ÎÆÛƼ¸¦ ¾²¸é ±×³É 1 ´õÇØ ´ëÀÔÇØ ¹ö¸®¸é µÈ´Ù.
Now.Hour = Now.Hour + 1;
¾ó¸¶³ª ÀÔ·ÂÇϱ⠽±°í Àб⵵ ÁÁÀº°¡? Now.Hour += 1;µµ °¡´ÉÇϸç Now.Hour++;µµ ÈǸ¢ÇÏ°Ô µ¿ÀÛÇÑ´Ù. ÄÄÆÄÀÏ·¯°¡ get, set Á¢±ÙÀÚ¸¦ ¾Ë¾Æ¼ È£ÃâÇØ ÁÖ´Ï »ç¿ëÀÚ´Â ÃÖ¼ÒÇÑÀÇ ÀÇ»ç Ç¥Çö¸¸ ÇÏ¸é µÈ´Ù. Çʵåó·³ Ãë±ÞµÇ¾î ¼ö½Ä³»¿¡¼ »ç¿ëÇÒ ¼ö ÀÖ°í Ç¥Çö½ÄÀÌ Âª¾Æ °¡µ¶¼º¿¡µµ À¯¸®ÇÏ´Ù. ÀÌ·± ÀÛÀº Â÷ÀÌ°¡ ¸ðÀÌ¸é »ý»ê¼º¿¡ ¾öû³ °ÝÂ÷°¡ ¹ú¾îÁø´Ù.
l ÇÁ·ÎÆÛƼ´Â ´Éµ¿ÀûÀ¸·Î µ¿ÀÛÇÏ¿© °´Ã¼ÀÇ ¹«°á¼ºÀ» ¿Ïº®ÇÏ°Ô ÁöŲ´Ù. get Á¢±ÙÀÚ´Â Çʵ带 Àд °ÍÀÌ º¸ÅëÀÌÁö¸¸ Á¶ÇÕµÈ °ªÀ» °è»êÇÏ¿© ¸®ÅÏÇÒ ¼öµµ ÀÖ´Ù. ÇÁ·ÎÆÛƼ¿Í Çʵ尡 ²À 1:1·Î ´ëÀÀµÉ ÇÊ¿ä´Â ¾ø´Ù. ´ÙÀ½ ÄÚµåÀÇ SalePrice ÇÁ·ÎÆÛƼ´Â µÎ ÇʵåÀÇ °ªÀ» Á¶ÇÕÇÏ¿© ¸®ÅÏÇÑ´Ù.
private int price;
private double sale;
public double SalePrice {
get { return price * sale; }
}
º¹ÀâÇÑ Á¶ÇÕ°ªÀ» ÇÁ·ÎÆÛƼ·Î Á¤ÀÇÇØ µÎ¸é Æí¸®ÇÏ´Ù. ±Þ¿©¿¡ º¸³Ê½º¸¦ ´õÇÏ°í °¡ºÒ±ÝÀ» »©´Â ÇÁ·ÎÆÛƼ³ª ȯÀ²À» Àû¿ëÇÏ¿© ¿øȸ¦ ´Þ·¯·Î ȯ»êÇÏ´Â ÇÁ·ÎÆÛƼµµ ½Ç¿ëÀûÀÌ´Ù. »ç¿ëÀÚ´Â Áß°£ ¼ö½ÄÀ» Àß ¸ô¶óµµ ÇÁ·ÎÆÛƼ À̸§¸¸À¸·Î ¿øÇÏ´Â °ªÀ» ½Å¼ÓÇÏ°Ô ¾òÀ» ¼ö ÀÖ´Ù. ³×Æ®¿÷ IP³ª ³²Àº ¸Þ¸ð¸® ¿ë·®Ã³·³ °´Ã¼³»¿¡ Á¸ÀçÇÏÁö ¾Ê´Â °ªÀ» ½Ç½Ã°£À¸·Î Á¶»çÇÒ ¼öµµ ÀÖ°í ȸé Çػ󵵳ª »ç¿îµå Ä«µåÀÇ º¼·ý °°Àº Çϵå¿þ¾î ¼³Á¤À» º¯°æÇÒ ¼öµµ ÀÖ´Ù. Á¢±ÙÀÚ ºí·Ï¿¡ ¿øÇÏ´Â Äڵ带 ÀÛ¼ºÇÒ ¼ö ÀÖ¾î Á¦¾àÀÌ °ÅÀÇ ¾ø´Ù.
l ºÎÈ¿°ú(Side Effect)µµ ó¸®ÇÒ ¼ö ÀÖ´Ù. Çʵå´Â ´ëÀԽà °ª¸¸ ¹Ù²îÁö¸¸ ÇÁ·ÎÆÛƼ´Â °ªÀ» ¹Ù²Ù¸é¼ ´Ù¸¥ Äڵ嵵 ½ÇÇàÇÒ ¼ö ÀÖ¾î °°ÀÌ ÇØ¾ß ÇÏ´Â ÀÛ¾÷±îÁö ó¸®ÇÑ´Ù. ³¯Â¥¸¦ ¹Ù²Ü ¶§ ¿äÀϵµ °°ÀÌ Á¶Á¤Çϰųª °´Ã¼¸¦ ¼û±â¸é »óŸ¦ ¹Ù²Þ°ú µ¿½Ã¿¡ ȸ鿡¼ Áö¿î´Ù. ²À ÇÊ¿äÇÑ Ã³¸®¸¦ ÀÚµ¿À¸·Î ¼öÇàÇÏ¿© Äڵ带 ´Ü¼øÈÇÑ´Ù. Time Ŭ·¡½º°¡ ÇöÀç ½Ã°£À» ȸ鿡 Ãâ·ÂÇÏ´Â ±â´ÉÀÌ ÀÖ´Ù¸é ½ÃºÐÃÊ Áß Çϳª¶óµµ ¹Ù²ð ¶§ ȸéÀ» °»½ÅÇÏ¸é µÈ´Ù. ÇÁ·ÎÆÛƼÀÇ ÀÌ·± Ư¼ºÀº ±×·¡ÇÈ È¯°æ¿¡¼ À¯¿ëÇѵ¥ À©µµ¿ì³ª ÄÁÆ®·ÑÀÇ ¼Ó¼ºÀÌ ¹Ù²î¸é ºÎÂ÷ÀûÀ¸·Î °°ÀÌ Ã³¸®ÇØ¾ß ÇÒ ÀÛ¾÷ÀÌ ¸¹´Ù.
l get, set Á¢±ÙÀÚ¸¦ »ý·«ÇÏ¿© Àбâ Àü¿ëÀ̳ª ¾²±â Àü¿ëÀÇ ÇÁ·ÎÆÛƼ¸¦ ¸¸µé ¼öµµ ÀÖ´Ù. ¾Õ¿¡¼ º¸ÀÎ SalePrice ÇÁ·ÎÆÛƼ´Â Á¶ÇÕµÈ °ªÀ» Á¶»çÇÏ´Â get Á¢±ÙÀÚ¸¸ ÀÖ¾î Àбâ Àü¿ëÀÌ¸ç ¿î¿µÃ¼Á¦ÀÇ ¹öÀüÀ̳ª Çϵåµð½ºÅ©ÀÇ ¿ë·®À» Á¶»çÇÏ´Â ÇÁ·ÎÆÛƼµµ Àбâ Àü¿ëÀÇ ÁÁÀº ¿¹ÀÌ´Ù.
Ç¥ÁØ ¶óÀ̺귯¸®ÀÇ Å¬·¡½ºµµ Àбâ Àü¿ëÀÇ ÇÁ·ÎÆÛƼ¸¦ ¸¹ÀÌ Á¦°øÇÑ´Ù. string °´Ã¼ÀÇ ±æÀ̸¦ Á¶»çÇÏ´Â Length³ª °¢ ŸÀÔÀÇ MinValue, MaxValue°¡ ±× ¿¹ÀÌ´Ù. Length ÇÁ·ÎÆÛƼ¸¦ º¯°æÇÑ´Ù°í Çؼ ¹®ÀÚ¿ÀÇ ±æÀÌ°¡ ¹Ù²îÁö´Â ¾Ê´Â´Ù. º° ½Ç¿ë¼ºÀº ¾øÁö¸¸ get Á¢±ÙÀÚ ¾øÀÌ set Á¢±ÙÀÚ¸¸ Á¦°øÇÏ¿© ¾²±â Àü¿ëÀÇ ÇÁ·ÎÆÛƼ¸¦ ¸¸µå´Â °Íµµ ÀÌ·Ð»ó °¡´ÉÇÏ´Ù.
get, set Á¢±ÙÀÚÀÇ ¾×¼¼½º ±ÇÇÑÀº °¢°¢ ´Ù¸£°Ô ÁöÁ¤ÇÒ ¼ö ÀÖ´Ù. ³»ºÎ¿¡¼´Â ÀÐ°í ¾²±â¸¦ ÀÚÀ¯·Ó°Ô Ç쵂 ¿ÜºÎ¿¡¼´Â Àб⸸ Çã¶ôÇÏ°í ½Í´Ù¸é set Á¢±ÙÀÚÀÇ ¾×¼¼½º ±ÇÇѸ¸ Á¦ÇÑÇÑ´Ù. Sec ÇÁ·ÎÆÛƼÀÇ set Á¢±ÙÀÚ¸¸ protected·Î º¯°æÇϸé ÀÚ½ÅÀ̳ª ÆÄ»ý Ŭ·¡½º¸¸ È£ÃâÇÒ ¼ö ÀÖÀ¸¸ç ¿ÜºÎ¿¡¼´Â º¯°æÇÒ ¼ö ¾ø´Ù.
public int Sec {
get { return sec; }
protected set { if (value < 60) sec = value; }
}
Á¢±ÙÀÚÀÇ ¾×¼¼½º ÁöÁ¤Àº ÇÁ·ÎÆÛƼ ÀÚüÀÇ ¾×¼¼½º ÁöÁ¤º¸´Ù ´õ Á¦ÇÑµÈ Âʸ¸ °¡´ÉÇÏ´Ù. ÇÁ·ÎÆÛƼ¸¦ ¼û°Ü ³õ°í set Á¢±ÙÀÚ¸¸ °ø°³ÇÒ ¼ö´Â ¾ø´Ù. Á¢±ÙÀÚÀÇ ¾×¼¼½º ÁöÁ¤ÀÌ »ý·«µÇ¸é ÇÁ·ÎÆÛƼÀÇ ¾×¼¼½º ÁöÁ¤À» µû¸¥´Ù.
l ÇÁ·ÎÆÛƼ´Â À̸§À» »ç¿ëÇÏ°í ŸÀÔÀÌ ºÐ¸íÇØ ºñÁÖ¾ó ÆíÁýÀÌ °¡´ÉÇÏ´Ù. µðÀÚÀÎÁß¿¡µµ °³¹ßÅøÀÇ ¼Ó¼ºÃ¢À» ÅëÇØ ÇÁ·ÎÆÛƼÀÇ °ªÀ» È®ÀÎÇÏ°í º¯°æÇÒ ¼ö ÀÖ´Ù. ¼Ó¼ºÃ¢ÀÇ ¿ÞÂÊ¿¡ ÀÖ´Â °ÍÀÌ ¸ðµÎ ÆíÁý °¡´ÉÇÑ ÇÁ·ÎÆÛƼÀÌ¸ç ¿À¸¥ÂÊ ¿¿¡¼ °ªÀ» ¼±ÅÃÇÑ´Ù.
ÇÁ·ÎÆÛƼ º¯°æ ÄÚµå´Â °³¹ß ÅøÀÌ ÀÛ¼ºÇÏ¸ç ºÎ È¿°ú´Â ÇÁ·ÎÆÛƼ¿¡ ÀÛ¼ºµÈ Äڵ尡 ó¸®ÇϹǷΠ»ç¿ëÀÚ´Â ¼Ó¼ºÃ¢À» ÅëÇØ ¿øÇÏ´Â ¼Ó¼ºÀ» ÁöÁ¤ÇÏ¸é µÈ´Ù. ºñÁÖ¾ó ½ºÆ©µð¿À´Â ÀÌ·± °³¹ßÅøÀÌ Àß Á¤ºñµÇ¾î ÀÖ¾î »ý»ê¼ºÀÌ ³ô´Ù.
l ÇÁ·ÎÆÛƼ´Â ÀζóÀΠ󸮵Ǹç È£Ã⠺δãÀÌ ¾ø¾î Get/Set ¸Þ¼µåº¸´Ù ºü¸£´Ù. ´Ü, °¡»óÀ¸·Î ¼±¾ðµÇ¾ú°Å³ª º»Ã¼ÀÇ Äڵ尡 ³Ê¹« ±æ ¶§´Â ÀζóÀÎÈÇÏÁö ¾Ê´Â´Ù. ÃʱâÈ Áö¿¬°°Àº ÃÖÀûÈ ±â¹ýÀ» Àû¿ëÇÏ¸é ºÒÇÊ¿äÇÑ ¿¬»êÀ» ÀÚÀçÇÏ¿© ¼Óµµ¿Í ¹ÝÀÀ¼ºÀ» ³ôÀÏ ¼ö ÀÖ´Ù.
ÇÁ·ÎÆÛƼ´Â Çʵåó·³ º¸ÀÌÁö¸¸ ³»ºÎÀûÀ¸·Î ¸Þ¼µå·Î ±¸ÇöµÈ´Ù. ÇʵåÀÇ Å»À» ¾´ ¸Þ¼µåÀÌ¸ç ±×·¡¼ ¶È¶ÈÇÑ Çʵå(Smart Field)¶ó°í ºÎ¸£±âµµ ÇÑ´Ù. ÇÁ·ÎÆÛƼ°¡ ±¸ÇöµÇ´Â ¹æ½ÄÀ» »ì¦ µé¿©´Ù º¸¸é °ú¿¬ ¸Þ¼µåÀÓÀ» È®ÀÎÇÒ ¼ö ÀÖ´Ù.
À̸§ÀÌ ProÀÎ ÇÁ·ÎÆÛƼÀÇ get, set Á¢±ÙÀÚ´Â get_Pro, set_Pro ¸Þ¼µå·Î ÀÛ¼ºµÈ´Ù. ³»ºÎ µ¿ÀÛ±îÁö ±»ÀÌ ¾Ë ÇÊ¿ä´Â ¾øÁö¸¸ ¾Ï½ÃÀûÀ¸·Î ¸Þ¼µå°¡ »ý¼ºµÊÀº ¾Ë¾Æ µÎ¾î¾ß ÇÑ´Ù. Hour ÇÁ·ÎÆÛƼ°¡ ÀÖ´Â »óÅ¿¡¼ int get_Hour() ¸Þ¼µå¸¦ ¼±¾ðÇϸé À̸§ Áߺ¹ÀÌ´Ù. get_, set_·Î ½ÃÀ۵Ǵ À̸§Àº ¿¹¾àµÇ¾î ÀÖ¾î »ç¿ëÇÏÁö ¸»¾Æ¾ß ÇÑ´Ù.
Çʵåó·³ »ý°åÁö¸¸ ±â¾ïÀå¼Ò°¡ ÇÒ´çµÇ¾î ÀÖÁö´Â ¾Ê´Ù. ±×·¡¼ ÇÁ·ÎÆÛƼ¸¦ ¸Þ¼µåÀÇ Ãâ·Â¿ë Àμö³ª ÂüÁ¶¿ë Àμö·Î Àü´ÞÇؼ´Â ¾ÈµÈ´Ù. ¸¸¾à Á¤ ÀÌ·± ½ÄÀ¸·Î »ç¿ëÇÏ·Á¸é Àӽà Áö¿ªº¯¼ö¸¦ Ãâ·Â¿ë Àμö·Î ³Ñ±ä ÈÄ ¸®ÅÏµÈ °á°ú¸¦ ÇÁ·ÎÆÛƼ¿¡ ´ëÀÔÇØ¾ß ÇÑ´Ù.
public static void func(out int a) { a = 12; }
func(out Now.Hour);
ºñÁÖ¾ó º£ÀÌÁ÷¿¡¼ °¡Á®¿Â ÇÁ·ÎÆÛƼ´Â Æí¸®ÇÏ°í ¸Å·ÂÀûÀ̸ç ÀåÁ¡ Åõ¼ºÀÌ´Ù. °³ÀÎÀûÀ¸·Î C#ÀÇ ¹®¹ý Áß °¡Àå ¸¶À½¿¡ µé¸ç C++ °³¹ßÀÚ ÀÔÀå¿¡¼ Ž³ª´Â ±â´ÉÀÌ´Ù.
ÇÁ·ÎÆÛƼ´Â ¿©·¯ °¡Áö ÀåÁ¡À» Á¦°øÇϸ鼵µ Çʵåó·³ ¾µ ¼ö ÀÖ¾î Æí¸®ÇÏ´Ù. ¾ÖÃʺÎÅÍ Çʵ庸´Ù´Â ÇÁ·ÎÆÛƼ·Î ¼±¾ðÇÏ´Â °ÍÀÌ À¯¸®ÇÏ°í È®À强µµ ÁÁ´Ù. Human Ŭ·¡½ºÀÇ Name°ú Age¸¦ ¼û±â°í ½ÍÀ¸¸é ´ÙÀ½ Äڵ带 ÀÛ¼ºÇÑ´Ù.
class Human {
private string _Name;
private int _Age;
public string Name { get { return _Name; } set { _Name = value; } }
public int Age { get { return _Age; } set { _Age = value; } }
}
Çʵå´Â ¼û±â°í Name, Age ÇÁ·ÎÆÛƼ·Î ´ë½Å ¾×¼¼½ºÇÑ´Ù. ÄÚµå´Â °£´ÜÇÏÁö¸¸ ¸â¹ö¸¦ Ãß°¡ÇÒ ¶§¸¶´Ù ÀÌ »·ÇÑ Äڵ带 ¸Å¹ø ¸¸µé±â´Â ¹ø°Å·Ó´Ù. ±×·¡¼ ÇÁ·ÎÆÛƼÀÇ º»Ã¼¸¦ ÀÚµ¿À¸·Î »ý¼ºÇÏ´Â ¹æ¹ý(Auto Implemented Property)À» Áö¿øÇϴµ¥ Çʵå´Â ¼±¾ðÇÒ ÇÊ¿ä ¾ø°í ÇÁ·ÎÆÛƼÀÇ º»Ã¼¿¡ get;set; À̶ó°í¸¸ ÀûÀ¸¸é µÈ´Ù.
AutoProperty |
|
using System;
class Human { public string Name { get; set; } public int Age { get; set; } }
class CSTest { static void Main() { Human Lee = new Human(); Lee.Name = "À̼ø½Å"; Lee.Age = 32; Console.WriteLine("À̸§ : " + Lee.Name + ", ³ªÀÌ : " + Lee.Age); } } |
|
½ÇÇà°á°ú |
À̸§ : À̼ø½Å, ³ªÀÌ : 32 |
º»Ã¼ÀÇ ÄÚµå´Â »ý·«ÇÏ°í Á¢±ÙÀÚ¸¸ ¸í½ÃÇß´Ù. ÄÄÆÄÀÏ·¯´Â ³»ºÎÀûÀ¸·Î ÇÁ·ÎÆÛƼ¿¡ ´ëÀÀµÇ´Â private ¼Ó¼ºÀÇ ¼û°ÜÁø Çʵ带 Ãß°¡ÇÑ´Ù. À̸§Àº Áö¸¾´ë·Î ºÙÀ̹ǷΠ¾Ë ¼ö ¾øÁö¸¸ get, set Á¢±ÙÀÚ¸¦ ÅëÇØ ¾×¼¼½ºÇÒ ¼ö ÀÖ´Ù. Field¶ó´Â À̸§ÀÇ ÀÚµ¿ ±¸Çö ÇÁ·ÎÆÛƼ¸¦ ¼±¾ðÇÏ¸é ´ÙÀ½ ÄÚµå·Î º¯È¯µÈ´Ù.
Çʵå´Â ¼û±â°í ´ë½Å °ø°³µÈ ÇÁ·ÎÆÛƼ¸¦ ¸¸µé¾î Áִµ¥ ¾Õ¿¡¼ Á÷Á¢ ¸¸µç ÄÚµå¿Í À¯»çÇÏ´Ù. Çʵ带 °¨½Î´Â ²®µ¥±â¸¦ ¼±¾ðÇÏ°í ½ÍÀ» ¶§ Æí¸®ÇÏ´Ù. Á¢±ÙÀÚÀÇ µ¿ÀÛÀÌ ´Ü¼øÈ÷ ÀÐ°í ¾²±â¸¸ ÇÏ´Â °ÍÀÌ¾î¼ ÀÌ·¸°Ô µÇ¸é °ø°³µÈ Çʵå¿Í ´Ù¸¦ ¹Ù ¾ø´Ù. ±×·¯³ª ÀÏ´Ü ÇÁ·ÎÆÛƼ·Î ¸¸µé¾î ³õ°í ÇÊ¿äÇÒ ¶§ ¹Ù²Ü ¼ö ÀÖ¾î Æí¸®ÇÏ´Ù.
ÀÚµ¿ ±¸Çö ÇÁ·ÎÆÛƼ´Â get°ú set Á¢±ÙÀÚ¸¦ ¸ðµÎ °¡Á®¾ß Çϸç Çʵå¿Í´Â ´Þ¸® °¢°¢¿¡ ´ëÇÑ ÁöÁ¤À» µû·Î ÇÒ ¼ö ÀÖ´Ù. ¿ÜºÎ¿¡ ´ëÇØ Àбâ Àü¿ëÀ¸·Î ¼±¾ðÇÏ°í ½ÍÀ¸¸é ÀÚµ¿ ±¸ÇöÇÑ ÈÄ set Á¢±ÙÀÚ¸¸ private·Î ¹Ù²Ù¸é µÈ´Ù.
public string Name { get; private set; }
ÀÌ °æ¿ì »ý¼ºÀÚ³ª º°µµÀÇ ¸Þ¼µå¸¦ ÅëÇØ NameÀ» º¯°æÇÏ´Â ¹æ¹ýÀ» Á¦°øÇØ¾ß ÇÑ´Ù. ¿ÜºÎ¿¡¼ Á¢±ÙÇÏÁö ¸øÇÏ´Â °ÍÀÏ »Ó set Á¢±ÙÀÚ´Â ¿©ÀüÈ÷ Á¸ÀçÇϹǷΠ³»ºÎ¿¡¼´Â °ªÀ» º¯°æÇÒ ¼ö ÀÖ´Ù. ´ëÀÔ ±ÔÄ¢À» º¯°æÇÏ°í ½ÍÀ¸¸é ±×¶§ set Á¢±ÙÀÚÀÇ º»Ã¼¸¦ ÀÛ¼ºÇÏ¸é µÈ´Ù. ÇÁ·ÎÆÛƼ¸¦ µðÆúÆ® ±¸ÇöÀ¸·Î ½Å¼ÓÇÏ°Ô ¼±¾ðÇØ ³õ°í ÇÊ¿äÇÒ ¶§ ¹Ù²Ü ¼ö ÀÖµµ·Ï ÇÏ´Â ¼ºñ½ºÀÌ´Ù. C# 6.0Àº ÀÚµ¿ ±¸Çö ÇÁ·ÎÆÛƼ¿¡µµ ÃʱⰪÀ» ÁöÁ¤ÇÒ ¼ö ÀÖ´Ù.
public string Name { get; set; } = "À̸§¾øÀ½";
public int Age { get; set; } = 20;
¼±¾ð¹® µÚ¿¡ = ÃʱⰪÀ» ÁöÁ¤ÇÏ¸é ¼û°ÜÁø Çʵ忡 ÀÌ °ªÀ» ´ëÀÔÇØ ÁØ´Ù. ÀÚµ¿ ±¸Çö ÇÁ·ÎÆÛƼ´Â º° ´ë´ÜÇÑ ±â´ÉÀº ¾Æ´Ï°í Àâ´ÙÇÑ µÞ󸮸¦ ÄÄÆÄÀÏ·¯°¡ ´ë½ÅÇØ ÁÖ´Â Á¤µµ´Ù. ¸®ÆÑÅ丵¿¡µµ ºñ½ÁÇÑ ±â´ÉÀÌ ÀÖ´Ù.
¾ð¾îÀÇ ¹®¹ýÀÌ È®ÀåµÈ °ÍÀÌ ¾Æ´Ï¶ó ÄÄÆÄÀÏ·¯ÀÇ ¼ºñ½º°¡ Ãß°¡µÈ °ÍÀÌ¸ç »ý¼ºµÇ´Â ÄÚµå´Â ¼ÕÀ¸·Î ¸¸µç ÄÚµå¿Í °°´Ù. ÆíÀÇ ±â´ÉÀ» Á¦°øÇÏ´Â È®Àå ¹®¹ýÀº ´ëºÎºÐ ÀÌ·±½ÄÀ¸·Î Ç¥Çö ¹æ¹ý¸¸ °³¼±ÇÑ °ÍÀÌ´Ù. ÀÚµ¿ ±¸Çö ÇÁ·ÎÆÛƼ¸¦ ÄÄÆÄÀÏÇÏ·Á¸é 6.0ÀÌ»óÀÇ ÄÄÆÄÀÏ·¯°¡ ÇÊ¿äÇÏÁö¸¸ ÀÌ·¸°Ô ¸¸µç ½ÇÇà ÆÄÀÏÀº ´å³Ý 2.0 ÀÌ»óÀÇ ÇÁ·¹ÀÓ¿öÅ©¿¡¼µµ Àß ½ÇÇàµÈ´Ù.
Àε¦¼(Indexer)´Â °´Ã¼¸¦ ¹è¿Ã³·³ »ç¿ëÇϴ Ưº°ÇÑ ¸Þ¼µåÀÌ´Ù. ¼ø¼°¡ ÀÖ´Â ¿©·¯ °³ÀÇ Çʵ带 ÷ÀÚ·Î ¾×¼¼½ºÇÒ ¼ö ÀÖ´Ù. °´Ã¼ À̸§ ´ÙÀ½¿¡ [÷ÀÚ]¸¦ Àû¾î ¿ä¼Ò¸¦ Àд´Ù.
ÁöÁ¤ÀÚ Å¸ÀÔ this[Àμö] {
get { return °ª; }
set { °ª º¯°æ; }
}
ÇÁ·ÎÆÛÅÍ¿Í ºñ½ÁÇÏ°Ô get, set Á¢±ÙÀÚ ºí·ÏÀ» °¡Áø´Ù. À̸§ÀÌ this·Î °íÁ¤µÇ¾î ÀÖ°í ÷ÀÚ¸¦ [ ] °ýÈ£ ¾ÈÀÇ Àμö·Î Àü´Þ¹Þ´Â´Ù. ÇÁ·ÎÆÛƼ´Â À̸§À¸·Î ±¸ºÐÇϴµ¥ ºñÇØ Àε¦¼´Â [ ] °ýÈ£ ¾ÈÀÇ Àμö ¸ñ·ÏÀ¸·Î ±¸ºÐÇÑ´Ù. ÷ÀÚ ÁöÁ¤À» À§ÇØ Çϳª ÀÌ»óÀÇ Àμö°¡ ÇÊ¿äÇÏ´Ù.
obj[idx] ¹®ÀåÀ¸·Î °ªÀ» ÀÐÀ¸¸é Àε¦¼ÀÇ get Á¢±ÙÀÚ°¡ idx ¹ø° ¿ä¼ÒÀÇ °ªÀ» ¸®ÅÏÇÑ´Ù. ÷ÀڷκÎÅÍ °ªÀ» ±¸ÇÏ´Â ¹æ½ÄÀº get Á¢±ÙÀÚ ºí·Ï¿¡¼ ÀÓÀÇ·Î °áÁ¤ÇÑ´Ù. obj[idx] = a ¹®ÀåÀ¸·Î °ªÀ» ´ëÀÔÇϸé set Á¢±ÙÀÚ°¡ idx ¹ø° ¿ä¼Ò¸¦ a·Î º¯°æÇÑ´Ù. À̶§ a´Â ¾Ï½ÃÀû Àμö value·Î Àü´ÞµÈ´Ù.
Time °´Ã¼¸¦ ±¸¼ºÇÏ´Â Çʵå´Â À̸§À¸·Î ¾×¼¼½ºÇÏÁö¸¸ Àε¦¼¸¦ ÅëÇØ Ã·ÀÚ·Î ¾×¼¼½ºÇÒ ¼öµµ ÀÖ´Ù. Çʵå¿Í ÷ÀÚÀÇ ´ëÀÀ °ü°è´Â ¸¸µå´Â »ç¶÷ ¸¶À½´ë·ÎÁö¸¸ »ó½Ä¿¡ ºÎÇÕÇÏ°Ô ´ëÀÀ½ÃÅ°´Â °ÍÀÌ ÁÁ´Ù. TimeÀÇ °æ¿ì ½Ã, ºÐ, ÃÊ¿¡ ´ëÇØ Ã·ÀÚ 0, 1, 2¸¦ ¼ø¼´ë·Î ´ëÀÀ½ÃÅ°´Â °ÍÀÌ ÇÕ¸®ÀûÀÌ´Ù.
TimeIndexer |
|
using System;
class Time { private int hour, min, sec; public Time(int h, int m, int s) { hour = h; min = m; sec = s; } public void OutTime() { Console.WriteLine($"{hour}½Ã {min}ºÐ {sec}ÃÊ"); } public int this[int what] { get { switch (what) { case 0: return hour; case 1: return min; case 2: return sec; default: return -1; } } set { switch (what) { case 0: hour = value; break; case 1: min = value; break; case 2: sec = value; break; default: break; } } } }
class CSTest { static void Main() { Time Now = new Time(12, 34, 56); Now.OutTime(); Now[1] = 19; Console.WriteLine("ºÐÀº {0}ÀÔ´Ï´Ù.", Now[1]); } } |
|
½ÇÇà°á°ú |
12½Ã 34ºÐ 56ÃÊ ºÐÀº 19ÀÔ´Ï´Ù. |
this Àε¦¼´Â Á¤¼öÇü ÷ÀÚ whatÀ» Àμö·Î ¹Þ¾Æ ´ëÀÀ ¿ä¼Ò¸¦ ¾×¼¼½ºÇÑ´Ù. get Á¢±ÙÀÚ´Â whatÀÌ 0ÀÌ¸é ½Ã°£À», 1ÀÌ¸é ºÐÀ», 2¸é Ãʸ¦ ¸®ÅÏÇÑ´Ù. Now[5] °°Àº ¹«È¿ÇÑ Ã·ÀÚ°¡ Àü´ÞµÉ ¼öµµ ÀÖ¾î default´Â »ý·«ÇÒ ¼ö ¾øÀ¸¸ç ¿¡·¯¶ó´Â ÀǹÌÀÇ -1À» ¸®ÅÏÇß´Ù. get Á¢±ÙÀÚ´Â ¸ðµç °æ¿ì¿¡ ´ëÇØ ¸®ÅÏ°ªÀ» ³Ñ°Ü¾ß ÇÑ´Ù.
set Á¢±ÙÀÚ´Â ¾×¼¼½º ´ë»óÀÎ what°ú ´ëÀ﵃ °ªÀÎ ¾Ï½ÃÀû Àμö value¸¦ Àü´Þ¹Þ´Â´Ù. whatÀ¸·ÎºÎÅÍ Çʵ带 ã¾Æ value¸¦ ´ëÀÔÇÑ´Ù. ÆíÀÇ»ó ¹«È¿ÇÑ °ª¿¡ ´ëÇÑ ¿¡·¯ 󸮴 »ý·«Çߴµ¥ Now[0] = 25 °°ÀÌ ¹«°á¼ºÀ» ÇØÄ¡´Â ´ëÀÔÀº °ÅºÎÇØ¾ß ÇÑ´Ù. TimeÇüÀÇ °´Ã¼ Now¸¦ ¼±¾ðÇÏ°í Àε¦¼·Î 1¹ø ¿ä¼Ò, Áï ºÐÀ» º¯°æÇÑ ÈÄ Àε¦¼·Î ´Ù½Ã 1¹ø ¿ä¼Ò¸¦ Àоî Ãâ·ÂÇß´Ù. ºÐÀ» min Çʵ尡 ¾Æ´Ñ Àε¦¼°¡ Á¤ÀÇÇϴ ÷ÀÚ 1·Î ¾×¼¼½ºÇß´Ù. min Çʵå´Â ¼û°ÜÁ® ÀÖÁö¸¸ Àε¦¼´Â °ø°³µÇ¾î ÀÖ¾î ¿ÜºÎ¿¡¼ ¾×¼¼½ºÇÒ ¼ö ÀÖ´Ù.
Now[÷ÀÚ] ½ÄÀ¸·Î °´Ã¼ À̸§ ´ÙÀ½¿¡ ÷ÀÚ¸¦ ¾²¸é Àû´çÇÑ À妽º Á¢±ÙÀÚ¸¦ È£ÃâÇÑ´Ù. À̶§ °ªÀÇ È帧ÀÌ Á¶±Ý º¹ÀâÇØ º¸À̴µ¥ ÀÐÀ» ¶§¿Í ´ëÀÔÇÒ ¶§ Àμö¿Í ¸®ÅÏ°ªÀº ´ÙÀ½°ú °°ÀÌ Àü´ÞµÈ´Ù.
Çʵå·Î ¾×¼¼½ºÇÏ´Â °Í¿¡ ºñÇØ Àε¦¼¸¦ »ç¿ëÇÏ¸é ¹Ýº¹ 󸮰¡ °¡´ÉÇÏ´Ù. À̸§Àº °³º°ÀûÀ¸·Î ¾×¼¼½ºÇØ¾ß ÇÏÁö¸¸ ÷ÀÚ´Â ¼ø¼°¡ ÀÖ¾î ·çÇÁ¸¦ µ¹¸± ¼ö ÀÖ´Ù. Time °´Ã¼ÀÇ ½Ã, ºÐ, Ãʸ¦ ¸ðµÎ 1 Áõ°¡½ÃÅ°°í ½Í´Ù¸é ´ÙÀ½°ú °°ÀÌ ·çÇÁ¸¦ µ¹¸°´Ù.
for (int i = 0; i < 3; i++) {
Now[i]++;
}
TimeÀº Çʵ尡 ¼¼ °³¹Û¿¡ ¾ø¾î º°¹Ý Â÷ÀÌ°¡ ¾øÁö¸¸ ¸â¹ö°¡ ±²ÀåÈ÷ ¸¹´Ù¸é ·çÇÁÀÇ ÀåÁ¡ÀÌ ±Ø´ëȵȴÙ. Àε¦¼´Â ¹è¿°ú ºñ½ÁÇÏÁö¸¸ ½ÇÁ¦·Î´Â ¸Þ¼µå¿©¼ ÀμöÀÇ Å¸ÀÔ¿¡ Á¦ÇÑÀÌ ¾ø´Ù. ´ÙÀ½ ¿¹Á¦´Â ¹®ÀÚ¿ À̸§À¸·Î Àε¦¼¸¦ ¾×¼¼½ºÇÑ´Ù.
StringIndex |
using System;
class Time { private int hour, min, sec; public Time(int h, int m, int s) { hour = h; min = m; sec = s; } public void OutTime() { Console.WriteLine($"{hour}½Ã {min}ºÐ {sec}ÃÊ"); } public int this[string what] { get { switch (what) { case "½Ã": return hour; case "ºÐ": return min; case "ÃÊ": return sec; default: return -1; } } set { switch (what) { case "½Ã": hour = value; break; case "ºÐ": min = value; break; case "ÃÊ": sec = value; break; default: break; } } } }
class CSTest { static void Main() { Time Now = new Time(12, 34, 56); Now.OutTime(); Now["ºÐ"] = 19; Console.WriteLine("ºÐÀº {0}ÀÔ´Ï´Ù.", Now["ºÐ"]); } } |
Àε¦¼ÀÇ Àμö°¡ string ŸÀÔÀ̸ç switch¹®Àº ¹®ÀÚ¿·ÎºÎÅÍ ½Ã, ºÐ, ÃÊ ¿ä¼Ò¸¦ ¾×¼¼½ºÇÑ´Ù. Now["½Ã"], Now["ºÐ"] Çü½ÄÀ¸·Î ¾×¼¼½ºÇÒ ¼ö ÀÖ´Ù. Human Ŭ·¡½º¿¡ ¹®ÀÚ¿ À妽º¸¦ Á¤ÀÇÇϸé Kim["³Ê À̸§ÀÌ ¹¹¾ß?"], Kim["³Ê µµ´ëü ¸î »ìÀÌ´Ï?"] °°Àº ±¸¹®µµ °¡´ÉÇÏ´Ù. ³»ºÎ ±¸ÇöÀº º¹ÀâÇÏ°ÚÁö¸¸ »ç¿ëÇϱ⿡´Â Á÷°üÀûÀÌ´Ù.
÷ÀÚÀÇ Å¸ÀÔ »Ó¸¸ ¾Æ´Ï¶ó °³¼ö¿¡ Á¦ÇÑÀÌ ¾ø¾î 2Â÷¿ø ¹è¿Ã³·³ ¾µ ¼öµµ ÀÖ°í ¸®ÅÏÇϴ ŸÀÔ¿¡ Á¦ÇÑÀÌ ¾ø¾î ¹è¿º¸´Ù À¶Å뼺ÀÌ ¿ùµîÈ÷ ³ô´Ù. Àε¦¼´Â ¹è¿ÀÇ Å»À» ¾´ ¸Þ¼µå¿©¼ ÀμöÀÇ °³¼ö³ª ŸÀÔ, ¸®ÅÏ°ªÀÇ Å¸ÀÔ¿¡ ¾Æ¹« Á¦¾àÀÌ ¾ø´Ù. Àε¦¼°¡ ÂüÁ¶ÇÏ´Â °ªÀÌ ¹Ýµå½Ã °´Ã¼ÀÇ ÇʵåÀÏ ÇÊ¿äµµ ¾ø´Ù. ³»ºÎÀûÀ¸·Î °è»êµÈ °ªÀ» ¸®ÅÏÇÒ ¼öµµ ÀÖ°í µ¥ÀÌÅͺ£À̽º³ª ³×Æ®¿÷¿¡¼ ½Ç½Ã°£À¸·Î Á¶»çÇÑ °ªÀÏ ¼öµµ ÀÖ´Ù. ´ÙÀ½ ¿¹Á¦´Â Àε¦¼·Î ±¸±¸´ÜÀ̶ó´Â ¾î·Á¿î °è»êÀ» ¼öÇàÇÑ´Ù.
CalcIndex |
|
using System;
class GuGu { public int this[int r, int c] { get { return (r * c); } } }
class CSTest { static void Main() { GuGu G = new GuGu(); Console.WriteLine("3 * 8 = {0}", G[3, 8]); } } |
|
½ÇÇà°á°ú |
3 * 8 = 24 |
GuGu Ŭ·¡½ºÀÇ Àε¦¼´Â get Á¢±ÙÀÚ¸¸ Á¤ÀÇÇØ Àбâ Àü¿ëÀÌ´Ù. µÎ °³ÀÇ Á¤¼ö Àμö¸¦ ÷ÀÚ·Î ¹Þ¾Æ ±× °öÀ» ¸®ÅÏÇÑ´Ù. ¸®ÅÏ°ªÀº °´Ã¼ÀÇ Çʵ尡 ¾Æ´Ñ ±ÔÄ¢´ë·Î °è»êÇÑ °ÍÀÌ´Ù. ±¸±¸´ÜÀÌ ³Ê¹« Àͼ÷ÇÑ °ø½ÄÀÌ¾î¼ Á» ½Ã½ÃÇØ º¸ÀÏÁö ¸ð¸£°ÚÁö¸¸ Àε¦¼ÀÇ ¹«ÇÑÇÑ È°¿ë¿¹¸¦ Àß º¸¿©ÁØ´Ù.
stock["Çѱ¹", 9]·Î Çѱ¹ÀÇ 9½Ã ÁÖ°¡¸¦, stock["´º¿å", 12]·Î ´º¿åÀÇ 12½Ã ÁÖ°¡¸¦ Á¶»çÇÒ ¼ö ÀÖ´Ù. ³»ºÎ¿¡¼´Â ¼¹ö Á¢¼Ó, ÁÖ°¡ Á¶»ç µîÀÇ º¹ÀâÇÑ Ã³¸®°¡ ÇÊ¿äÇÏÁö¸¸ ±×°Ç ¸¸µå´Â »ç¶÷ÀÌ ¾Ë¾Æ¼ ÇÒ ÀÏÀÌ°í »ç¿ëÀÚ´Â Æí¸®ÇÏ°Ô ¾µ ¼ö ÀÖ´Ù. ÀÌ°ÍÀÌ °´Ã¼ÁöÇâÀÇ ÇÙ½É Ã¶ÇÐÀε¥ ¼Ò¼öÀÇ °³¹ßÀÚ°¡ »±À̸¦ Ä¡´õ¶óµµ ´Ù¼öÀÇ »ç¿ëÀÚ°¡ Æí¸®Çϸé À嶯ÀÌ´Ù. ÇÁ·ÎÆÛƼ¿Í Àε¦¼´Â ÀÌ Ã¶Çп¡ ¾ÆÁÖ Ãæ½ÇÇÑ ¹®¹ýÀÌ´Ù.
Àε¦¼´Â ÇÁ·ÎÆÛƼ¿Í ´Þ¸® Àμö°¡ ÀÖ¾î ¿À¹ö·Îµùµµ °¡´ÉÇÏ´Ù. ¿©·¯ ¹öÀüÀÇ Àε¦¼¸¦ ±¸ºñÇØ ³õ°í ¹Ù²ã °¡¸ç ¾µ ¼öµµ ÀÖ´Ù. °¡»óÀ¸·Î ¼±¾ðÇÒ ¼öµµ ÀÖ°í ÀçÁ¤ÀÇÇÒ ¼öµµ ÀÖ´Ù. ±×·¯³ª È£Ãâ ¹®¹ýÀÌ °´Ã¼[÷ÀÚ] Çü½ÄÀ¸·Î °´Ã¼¸¦ ÅëÇØ È£ÃâÇϵµ·Ï µÇ¾î ÀÖ¾î Á¤ÀûÀ¸·Î ¼±¾ðÇÒ ¼ö´Â ¾ø´Ù. ³»ºÎÀûÀ¸·Î Àε¦¼´Â ItemÀ̶ó´Â À̸§ÀÇ ÇÁ·ÎÆÛƼó·³ ±¸ÇöµÈ´Ù. ±×·¡¼ Àε¦¼ÀÇ Á¢±ÙÀÚ´Â get_Item, set_ItemÀ¸·Î À̸§ÀÌ °íÁ¤µÇ¾î ÀÖ´Ù. ÄÄÆÄÀÏ·¯¿¡ ÀÇÇØ ¿¹¾àµÈ ¸íĪÀ̹ǷΠÀÌ À̸§°ú ¶È°°Àº ¸Þ¼µå¸¦ Á¤ÀÇÇÏÁö ¸»¾Æ¾ß ÇÑ´Ù.