7-2.ÇÁ·ÎÆÛƼ

7-2-1.ÇÁ·ÎÆÛƼ

¸â¹ö¸¦ ¿ÜºÎ¿¡¼­ ¸¶À½´ë·Î ÀÐ°í ¾µ ¼ö ÀÖ´Ù¸é ±ÔÄ¢¿¡ ¸ÂÁö ¾Ê´Â °ªÀÌ µé¾î¿Í ¹«°á¼ºÀÌ Æı«µÈ´Ù. ¹«°á¼ºÀÌ ÈÑ¼ÕµÈ °´Ã¼´Â Á¦´ë·Î µ¿ÀÛÇÏÁö ¾ÊÀ» »Ó´õ·¯ ¾ðÁ¦ ¸»½éÀ» ÀÏÀ¸Å³Áö ¾Ë ¼ö ¾ø¾î À§ÇèÇÏ´Ù. ±×·¡¼­ ¾×¼¼½º ÁöÁ¤ÀÚ·Î ÁÖ¿ä ¸â¹ö¸¦ ¿ÜºÎ·ÎºÎÅÍ º¸È£ÇÑ´Ù.

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;´Â º° Â÷ÀÌ°¡ ¾ø¾î º¸ÀÌ¸ç ½ÇÁ¦ ½ÇÇàµÇ´Â Äڵ嵵 °°´Ù.

7-2-2.ÇÁ·ÎÆÛƼÀÇ ÀåÁ¡

Çʵ带 °ø°³ÇÏ´Â ¹æ¹ýÀ̳ª 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++ °³¹ßÀÚ ÀÔÀå¿¡¼­ Ž³ª´Â ±â´ÉÀÌ´Ù.

7-2-3.ÀÚµ¿ ±¸Çö ÇÁ·ÎÆÛƼ

ÇÁ·ÎÆÛƼ´Â ¿©·¯ °¡Áö ÀåÁ¡À» Á¦°øÇϸ鼭µµ Çʵåó·³ ¾µ ¼ö ÀÖ¾î Æí¸®ÇÏ´Ù. ¾ÖÃʺÎÅÍ Çʵ庸´Ù´Â ÇÁ·ÎÆÛƼ·Î ¼±¾ðÇÏ´Â °ÍÀÌ À¯¸®ÇÏ°í È®À强µµ ÁÁ´Ù. 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 ÀÌ»óÀÇ ÇÁ·¹ÀÓ¿öÅ©¿¡¼­µµ Àß ½ÇÇàµÈ´Ù.

7-2-4.Àε¦¼­

Àε¦¼­(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À¸·Î À̸§ÀÌ °íÁ¤µÇ¾î ÀÖ´Ù. ÄÄÆÄÀÏ·¯¿¡ ÀÇÇØ ¿¹¾àµÈ ¸íĪÀ̹ǷΠÀÌ À̸§°ú ¶È°°Àº ¸Þ¼­µå¸¦ Á¤ÀÇÇÏÁö ¸»¾Æ¾ß ÇÑ´Ù.