¿¬»êÀÚ´Â ÇÇ¿¬»êÀÚ¸¦ Àμö·Î ÃëÇÏ°í °è»ê °á°ú¸¦ ¸®ÅÏÇÑ´Ù´Â Á¡¿¡¼ ÇÔ¼ö¿Í À¯»çÇÏ´Ù. ´Ù¸¸ ÇÇ¿¬»êÀÚ °³¼ö°¡ Á¤ÇØÁ® ÀÖ°í À̸§ÀÌ ¾Æ´Ñ ±âÈ£·Î È£ÃâÇÑ´Ù´Â Á¡ÀÌ ´Ù¸£´Ù. ¿¬»êÀÚ ¿À¹ö·ÎµùÀº ¿ø·¡ÀÇ ¿¬»êÀÚ ÇÔ¼ö¸¦ Ŭ·¡½º ŸÀÔ¿¡ ´ëÇØ Áߺ¹ Á¤ÀÇÇÏ¿© °´Ã¼¿¡ ´ëÇÑ ¿¬»êÀ» Á¤ÀÇÇÏ´Â ±â¹ýÀÌ´Ù. ¿À¹ö·ÎµùÀº ÀμöÀÇ Å¸ÀÔÀÌ ´Ù¸¦ ¶§ ¼º¸³Çϴµ¥ ¿¬»êÀÚ´Â ÇÇ¿¬»êÀÚ°¡ Àμö¿©¼ ÇÇ¿¬»êÀÚº°·Î Á¤ÀÇÇÒ ¼ö ÀÖ´Ù. ±âº» ŸÀÔ¿¡ ´ëÇÑ ¿¬»êÀÚ´Â °¢ ŸÀÔ¿¡ ´ëÇØ ÀÌ¹Ì ¿À¹ö·ÎµùµÇ¾î ÀÖ´Ù. ±×·¡¼ ´ÙÀ½°ú °°Àº ¿¬»êÀÌ ÀÚ¿¬½º·´°Ô ¼º¸³ÇÑ´Ù.
¿¬»ê½Ä |
¿¬»êÀÚ ÇÔ¼ö |
1 + 2 |
int +(int a, int b) |
3.14 + 2.54 |
double +(double a, double b) |
"Çϳª" + "µÑ" |
string +(string a, string b) |
Á¤¼ö¿Í ½Ç¼ö, ¹®ÀÚ¿Àº ³»ºÎÀûÀÎ ±¸Á¶°¡ ´Ù¸£¸ç + ¿¬»ê ¾Ë°í¸®Áòµµ ´ç¿¬È÷ ´Ù¸£´Ù. ¶È°°Àº + ¿¬»êÀ¸·Î Á¤¼ö, ½Ç¼ö, ¹®ÀÚ¿À» ´õÇÒ ¼ö ÀÖ´Â ÀÌÀ¯´Â + ¿¬»êÀÚ°¡ °¢ ŸÀÔ¿¡ ´ëÇØ Áߺ¹ Á¤ÀǵǾî Àֱ⠶§¹®ÀÌ´Ù. + ¿¬»êÀÚÀÇ ¿øÇüÀ» ÇÔ¼öÀÇ ÇüÅ·ΠÀÛ¼ºÇØ º¸¸é À§ ¿À¸¥ÂÊ°ú °°´Ù.
°¢ ¿¬»êÀÚÀÇ ³»ºÎ ÄÚµå´Â ´Ù¸£Áö¸¸ ÇÇ¿¬»êÀÚ Å¸ÀÔ¿¡ µû¶ó ÀûÀýÇÑ ¸Þ¼µå°¡ È£ÃâµÇ¾î +¶ó´Â ÇϳªÀÇ ¿¬»êÀÚ·Î Á¤¼ö¸¦ ´õÇÏ°í ¹®ÀÚ¿À» ¿¬°áÇÏ´Â µ¿ÀÛÀÌ ¸ðµÎ °¡´ÉÇÏ´Ù. ±×·¯³ª ¹è¿³¢¸® ´õÇϰųª °´Ã¼³¢¸® ´õÇÏ´Â + ¿¬»êÀÚ´Â Á¤ÀǵǾî ÀÖÁö ¾Ê¾Æ ´ÙÀ½ ¿¬»ê½ÄÀº ÄÄÆÄÀϵÇÁö ¾Ê´Â´Ù.
Time A, B, C;
C = A + B;
+ ¿¬»êÀÚ´Â Time Ŭ·¡½ºÀÇ ³»ºÎ¸¦ ¸ð¸£¸ç ¾î¶»°Ô ´õÇÏ´ÂÁöµµ ´ç¿¬È÷ ¸ð¸¥´Ù. TimeÇü °´Ã¼³¢¸® ´õÇÏ·Á¸é TimeÀ» ÇÇ¿¬»êÀÚ·Î ¹Þ´Â + ¿¬»êÀÚ¸¦ »õ·Î Á¤ÀÇÇØ¾ß ÇÑ´Ù. TimeÀº »ç¿ëÀÚ°¡ Á¤ÀÇÇÑ Æ¯¼öÇÑ Å¸ÀÔÀ̹ǷΠ¾î¶»°Ô ´õÇÏ´ÂÁöµµ »ç¿ëÀÚ°¡ Á¤ÀÇÇØ¾ß ÇÑ´Ù.
¿¬»êÀÚ ´ë½Å AddTime°°Àº ¸Þ¼µå¸¦ Á¤ÀÇÇÒ ¼öµµ ÀÖÁö¸¸ ¿¬»êÀڴ ǥ±â°¡ °£ÆíÇÏ°í Á÷°üÀûÀÌ´Ù. AddTime(A, B)º¸´Ù´Â A + B°¡ »ó½ÄÀûÀÌ°í ÀÔ·ÂÇϱ⠽¬¿ì¸ç °¡µ¶¼ºµµ ³ô´Ù. ¿¬»êÀÚ³ª ¸Þ¼µå³ª ¿¬¼âÀûÀÎ ¿¬»êÀÌ °¡´ÉÇÏ´Ù. ´ÙÀ½Àº 4°³ÀÇ ½Ã°£ °´Ã¼¸¦ ´õÇÏ´Â ¿¹Àε¥ ¾î´ÀÂÊÀÌ ´õ ½¬¿îÁö ¸í¹éÇÏ´Ù.
E = AddTime(A, AddTime(B,AddTime(C, D)))
E = A + B + C + D;
¿©·¯ ¿¬»êÀÌ ¼¯¿© ÀÖÀ» ¶§´Â Â÷ÀÌ°¡ ´õ ¹ú¾îÁø´Ù. °Ô´Ù°¡ ¿¬»êÀÚ´Â ¿ì¼±¼øÀ§¿Í °áÇÕ¼ø¼ÀÇ °³³äÀÌ ÀÖ¾î °ýÈ£¸¦ ¾²Áö ¾Ê¾Æµµ ¼ø¼°¡ ºÐ¸íÇÏ´Ù. A + B * C / D + E °°Àº ½ÄÀ» ¸Þ¼µå·Î ¼öÇàÇÏÀÚ¸é ²Ï ÁöÀúºÐÇØÁø´Ù. ¿¬»êÀÚ°¡ ÇÒ ¼ö ÀÖ´Â ¸ðµç ÀÏÀº ¸Þ¼µåµµ ÇÒ ¼ö ÀÖÀ¸¸ç ¼Óµµ³ª Å©±âÂ÷µµ °ÅÀÇ ¾ø´Ù. ±»ÀÌ ¿¬»êÀÚ¸¦ Á¤ÀÇÇÏ´Â ÀÌÀ¯´Â º¸±â ÁÁ°í Æí¸®ÇÏ¸ç »ý»ê¼ºÀÌ ³ô±â ¶§¹®ÀÌ´Ù.
¿¬»êÀÚ ÇÔ¼öÀÇ À̸§Àº operator XÀ̸ç X ÀÚ¸®¿¡ ¿À¹ö·ÎµùÇÒ ¿¬»êÀÚ°¡ ¿Â´Ù. ¿¹¸¦ µé¾î + ¿¬»êÀÚ¸¦ Á¤ÀÇÇÏ°í ½ÍÀ¸¸é operator + À̸§À¸·Î ¸Þ¼µå¸¦ ¸¸µç´Ù. ¿¬»êÀÚ ±âÈ£¸¦ ¸íĪÀ¸·Î ¾µ ¼ö ¾ø¾î operator Å°¿öµå¸¦ ºÙ¿© À̸§À» ÀÛ¼ºÇÑ´Ù. ¿À¹ö·Îµù °¡´ÉÇÑ ¿¬»êÀÚ ¸ñ·ÏÀº ´ÙÀ½°ú °°´Ù.
Á¾·ù |
¿¬»êÀÚ |
»ê¼ú |
+ - * / % |
ºÎÈ£ |
+ - |
Áõ°¨ |
++, -- |
ºñÆ® |
& | ^ << >> ~ |
ºñ±³ |
== != > < >= <= ! |
¸ðµç ¿¬»êÀÚ¸¦ ´Ù ¿À¹ö·ÎµùÇÒ ¼ö ÀÖ´Â °ÍÀº ¾Æ´Ï´Ù. ´ëÇ¥ÀûÀ¸·Î = ¿¬»êÀÚ´Â ³Ê¹« ±âº»ÀûÀÎ ¿¬»êÀ̶ó ¿À¹ö·ÎµùÇÒ ¼ö ¾ø´Ù. [ ] ¿¬»êÀÚ´Â Àε¦¼·Î ´ë½Å Á¤ÀÇÇÒ ¼ö ÀÖ¾î ¿À¹ö·Îµù ´ë»óÀÌ ¾Æ´Ï¸ç &&, || ¿¬»êÀÚ´Â ¼îÆ® ¼Å°Æ® ±â´É¿¡ ÀÇÇÑ ¹Î°¨ÇÑ ºÎÀÛ¿ëÀÌ ÀÖ¾î ¿À¹ö·ÎµùÀÌ ±ÝÁöµÇ¾î ÀÖ´Ù. ±×·³ ÀÌ·ÐÀº ÀÌÂë¿¡¼ Á¢¾îµÎ°í ¿¬»êÀÚ ¿À¹ö·ÎµùÀ» Á÷Á¢ ÇØ º¸ÀÚ. ´ÙÀ½ ¿¹Á¦´Â Time °´Ã¼³¢¸® ´õÇÏ´Â + ¿¬»êÀÚ¸¦ Á¤ÀÇÇÏ¿© ½Ã°£³¢¸® ´õÇÑ´Ù.
TimePlus |
|
using System;
class Time { private int hour, min, sec; public Time() { } public Time(int h, int m, int s) { hour = h; min = m; sec = s; } public void OutTime() { Console.WriteLine($"{hour}½Ã {min}ºÐ {sec}ÃÊ"); } public static Time operator +(Time A, Time B) { Time T = new Time(); T.hour = A.hour + B.hour; T.min = A.min + B.min; T.sec = A.sec + B.sec;
T.min += T.sec / 60; T.sec %= 60; T.hour += T.min / 60; T.min %= 60; return T; } }
class CSTest { static void Main() { Time A = new Time(1, 1, 1); Time B = new Time(2, 2, 2); Time C; C = A + B; C.OutTime(); } } |
|
½ÇÇà°á°ú |
3½Ã 3ºÐ 3ÃÊ |
operator +¸Þ¼µå°¡ Time °´Ã¼³¢¸® ´õÇÏ´Â ¿¬»êÀÚÀÌ´Ù. ¿ÜºÎ¿¡¼ È£ÃâÇÏ·Á¸é publicÀ¸·Î ¼±¾ðÇØ¾ß ÇÑ´Ù. ¶Ç ±³È¯ ¹ýÄ¢À» Àû¿ëÇÏ·Á¸é È£Ãâ °´Ã¼¿¡ »ó°ü¾øÀÌ ¿¬»êÇÒ ¼ö ÀÖµµ·Ï staticÀ̾î¾ß ÇÑ´Ù. + ¿¬»êÀÚ´Â ÀÌÇ× ¿¬»êÀÚÀ̹ǷΠÀμöµµ ²À µÎ °³ ÀÖ¾î¾ß ÇÑ´Ù.
operator +ÀÇ º»Ã¼´Â ÇÇ¿¬»êÀÚÀÇ ¿ø·¡°ªÀ» À¯ÁöÇϱâ À§ÇØ Àӽà °´Ã¼¸¦ »ý¼ºÇÏ°í Àμö·Î Àü´Þ¹ÞÀº A¿Í BÀÇ °¢ ½Ã°£ ¿ä¼Ò¸¦ ´õÇÑ´Ù. À̶§ °¢ ¿ä¼ÒÀÇ ÀÚ¸® ³ÑħÀ» ó¸®Çϴµ¥ Ãʸ¦ ´õÇÑ °á°ú°¡ 60ÀÌ ³ÑÀ¸¸é ºÐÀ» Áõ°¡½ÃÅ°¸ç ºÐÀ» ´õÇÑ °á°ú°¡ 60 ÀÌ»óÀÌ¸é ½Ã¸¦ Áõ°¡½ÃŲ´Ù. 1:1:40ÃÊ¿Í 2:2:36Ãʸ¦ ´õÇϸé 3:3:76ÃÊ°¡ µÇ´Â °ÍÀÌ ¾Æ´Ï¶ó 3:4:16ÃÊ°¡ µÈ´Ù.
½Ã°£³¢¸® ´õÇÏ´Â ¿¬»êÀº ¼öÄ¡Çü³¢¸® ´õÇÏ´Â °Í°ú´Â ´Þ¸® Ư¼öÇÑ Ã³¸®°¡ ÇÊ¿äÇØ ¿¬»êÀÚ¸¦ µû·Î Á¤ÀÇÇØ¾ß ÇÑ´Ù. MainÀº C = A + B ¿¬»ê½ÄÀ¸·Î µÎ °´Ã¼¸¦ ´õÇÑ´Ù. ÀÌ È£Ãâ¿¡ ÀÇÇØ operator +(A, B)°¡ È£ÃâµÇ°í Àӽà °´Ã¼ T¿¡ A¿Í BÀÇ °¢ ½Ã°£ ¿ä¼Ò³¢¸® ´õÇØ T¸¦ ¸®ÅÏÇÏ¸ç ±× °á°ú¸¦ C°¡ ´ëÀԹ޴´Ù. ÇÇ¿¬»êÀÚÀÇ °³¼ö¿¡´Â Á¦ÇÑÀÌ ÀÖÁö¸¸ ŸÀÔ¿¡´Â Á¦ÇÑÀÌ ¾ø¾î Time °´Ã¼¿Í Á¤¼ö¸¦ ´õÇÒ ¼öµµ ÀÖ´Ù. Á¤¼ö¸¦ ÃÊ·Î °£ÁÖÇÏ¿© ½Ã°£¿¡ ÁöÁ¤ÇÑ Ãʸ¦ ´õÇÏ¸é µÈ´Ù. ÀÌ ¿¬»êÀ» À§ÇØ Time°ú int¸¦ Àμö·Î ¹Þ´Â ¿¬»êÀÚ¸¦ Á¤ÀÇÇÑ´Ù.
TimePlusInt |
|
using System;
class Time { private int hour, min, sec; public Time() { } public Time(int h, int m, int s) { hour = h; min = m; sec = s; } public void OutTime() { Console.WriteLine($"{hour}½Ã {min}ºÐ {sec}ÃÊ"); } public static Time operator +(Time A, int s) { Time T = new Time(); T.hour = A.hour; T.min = A.min; T.sec = A.sec; T.sec += s;
T.min += T.sec / 60; T.sec %= 60; T.hour += T.min / 60; T.min %= 60; return T; } public static Time operator +(int s, Time A) { return A + s; } }
class CSTest { static void Main() { Time A = new Time(1, 1, 1); A = A + 1; A.OutTime(); A = 1 + A; A.OutTime(); A += 2; A.OutTime(); } } |
|
½ÇÇà°á°ú |
1½Ã 1ºÐ 2ÃÊ 1½Ã 1ºÐ 3ÃÊ 1½Ã 1ºÐ 5ÃÊ |
operator +(Time A, int s)´Â Áº¯ÀÇ A °´Ã¼¿Í ¿ìº¯ÀÇ Á¤¼ö s¸¦ ´õÇØ A¿¡ sÃʸ¸Å °æ°úÇÑ ½Ã°£À» °è»êÇÑ´Ù. Àӽà °´Ã¼ T¸¦ »ý¼ºÇÏ°í AÀÇ °ªÀ» ´ëÀÔ¹ÞÀº ÈÄ ÃÊ¿¡ s¸¦ ´õÇÏ°í ÀÚ¸® ³ÑħÀ» ó¸®ÇÑ´Ù. µ¡¼ÀÀº ±³È¯ ¹ýÄ¢ÀÌ ¼º¸³ÇØ ÇÇ¿¬»êÀÚÀÇ ¼ø¼´Â Áß¿äÄ¡ ¾Ê´Ù. A + 1ÀÌ °¡´ÉÇϸé 1 + Aµµ ´ç¿¬È÷ °¡´ÉÇØ¾ß ÇÑ´Ù.
±×·¡¼ Àμö ¼ø¼¿¡ µû¶ó µÎ °³ÀÇ ÇÔ¼ö¸¦ ÀÛ¼ºÇ쵂 ³»ºÎ µ¿ÀÛÀº °°À¸´Ï ½ÇÁ¦ ¿¬»ê ÄÚµå´Â ÇÑÂÊ¿¡ ÀÛ¼ºÇÏ°í ³ª¸ÓÁö ÇÑÂÊÀº ÀμöÀÇ ¼ø¼¸¸ ¹Ù²ã ÁÖ¸é µÈ´Ù. C#Àº += ¿¬»êÀ» +¿Í =ÀÇ Á¶ÇÕÀ¸·Î Ãë±ÞÇϱ⠶§¹®¿¡ + ¿¬»êÀÚ¸¦ Á¤ÀÇÇϸé +=µµ ÀÚµ¿À¸·Î Á¤ÀǵȴÙ. ±×·¯³ª +¸¦ Á¤ÀÇÇÑ´Ù°í Çؼ ++ÀÌ Á¤ÀǵǴ °ÍÀº ¾Æ´Ï´Ù. ++Àº ¾Æ¿¹ ´Ù¸¥ ¿¬»êÀÚ¿©¼ µû·Î Á¤ÀÇÇØ¾ß ÇÑ´Ù.
´ÙÀ½Àº ºñ±³ ¿¬»êÀÚ¸¦ ¿À¹ö·ÎµùÇØ º¸ÀÚ. ÂüÁ¶ ŸÀÔ¿¡ ´ëÇÑ == ¿¬»êÀº ¹øÁö¸¸ ºñ±³Çϴµ¥ ¿À¹ö·ÎµùÇÏ¸é ½ÇÁ¦ ³»¿ëÀ» ºñ±³ÇÒ ¼ö ÀÖ´Ù. ´ÙÀ½ ¿¹Á¦´Â µÎ °³ÀÇ Time °´Ã¼°¡ °°Àº ½Ã°£À» °¡Áö´ÂÁö ºñ±³ÇÑ´Ù.
TimeEqual |
|
using System;
class Time { private int hour, min, sec; public Time() { } public Time(int h, int m, int s) { hour = h; min = m; sec = s; } public void OutTime() { Console.WriteLine($"{hour}½Ã {min}ºÐ {sec}ÃÊ"); } public static bool operator ==(Time A, Time B) { return (A.hour == B.hour && A.min == B.min && A.sec == B.sec); } public static bool operator !=(Time A, Time B) { return !(A == B); } }
class CSTest { static void Main() { Time A = new Time(5, 5, 5); Time B = new Time(5, 5, 5); Time C = new Time(6, 6, 6); Console.WriteLine("A¿Í B´Â {0}", (A == B ? "°°´Ù" : "´Ù¸£´Ù")); Console.WriteLine("A¿Í C´Â {0}", (A == C ? "°°´Ù" : "´Ù¸£´Ù")); } } |
|
½ÇÇà°á°ú |
A¿Í B´Â °°´Ù A¿Í C´Â ´Ù¸£´Ù |
== ¿¬»êÀÚ´Â µÎ ½Ã°£ÀÌ °°ÀºÁö º¸±â À§ÇØ ½Ã, ºÐ, ÃÊÀÇ ¸ðµç ¿ä¼Ò°¡ µ¿½Ã¿¡ ÀÏÄ¡ÇÏ´ÂÁö Á¡°ËÇÑ´Ù. A¿Í B´Â ¸ðµÎ 5½Ã 5ºÐ 5ÃÊÀ̹ǷΠ°°´Ù°í Æò°¡Çϸç A¿Í C´Â ´Ù¸¥ °ÍÀ¸·Î Æò°¡ÇÑ´Ù. ¿ø·¡ÀÇ == ¿¬»êÀº ¹øÁö¸¸ º¸±â ¶§¹®¿¡ ¿À¹ö·ÎµùÇÏÁö ¾ÊÀ¸¸é A¿Í Bµµ ´Ù¸¥ °ÍÀ¸·Î Æò°¡ÇÑ´Ù. ¹®ÀÚ¿À» == ¿¬»êÀÚ·Î ºñ±³ÇÒ ¼ö ÀÖ´Â ÀÌÀ¯µµ string Ŭ·¡½º°¡ == ¿¬»êÀÚ¸¦ ¿À¹ö·ÎµùÇØ ³õ¾Ò±â ¶§¹®ÀÌ´Ù.
¿¬»êÀÚÀÇ ¸®ÅÏ Å¸ÀÔ¿¡ Á¦¾àÀº ¾øÁö¸¸ ºñ±³ ¿¬»êÀÚ´Â Á¶°Ç½Ä¿¡ ÁÖ·Î »ç¿ëµÇ¹Ç·Î ¹Ýµå½Ã bool ŸÀÔÀ» ¸®ÅÏÇØ¾ß ÇÑ´Ù. ¾ïÁö·Î ¸¸µé¸é ºñ±³ ¿¬»êÀÚ°¡ int³ª stringÀ» ¸®ÅÏÇÏ´Â °Íµµ °¡´ÉÇÏÁö¸¸ ÀÌ·¸°Ô ¸¸µç ºñ±³ ¿¬»êÀÚ´Â ±×¾ß ¸»·Î ½á¸ÔÀ» µ¥°¡ ¾ø´Ù.
ºñ±³ ¿¬»êÀÚ´Â ´ëÀÀµÇ´Â ¹Ý´ë ¿¬»êÀÚ¿Í Â¦À¸·Î ¿À¹ö·ÎµùÇØ¾ß ÇÑ´Ù. ==À» Á¤ÀÇÇßÀ¸¸é !=µµ °°ÀÌ Á¤ÀÇÇÏ´Â °ÍÀÌ Å¸´çÇÏ´Ù. == Àº ³»¿ëÀ» ºñ±³Çϴµ¥ !=Àº ¹øÁö¸¦ ºñ±³Çϸé ÀÏ°ü¼ºÀÌ ¾ø´Ù. A == B°¡ ÂüÀÏ ¶§ A != B´Â ´ç¿¬È÷ °ÅÁþÀÌ µÇ¾î¾ß ³í¸®ÀûÀ¸·Î ¾ÈÁ¤µÈ´Ù. ±×·¡¼ ÄÄÆÄÀÏ·¯´Â == °ú !=À» °°ÀÌ Á¤ÀÇÇϵµ·Ï °Á¦ÇÑ´Ù. == ÀÌ Á¤ÀǵǾî ÀÖÀ¸¸é !=À» Á¤ÀÇÇÏ´Â °ÍÀº ±²ÀåÈ÷ ½¬¿îµ¥ ´Ü¼øÈ÷ ==ÀÇ ¹Ý´ë°ªÀ» ¸®ÅÏÇÏ¸é µÈ´Ù. °°Àº ÀÌÀ¯·Î <¿Í >, ±×¸®°í <=¿Í >=µµ ¹Ýµå½Ã ¦À¸·Î ¿À¹ö·ÎµùÇÑ´Ù. ÀÌ¿Ü¿¡ Ä÷º¼Ç¿¡ ÀúÀåµÉ ¶§¸¦ À§ÇØ Equals, GetHashCode ¸Þ¼µåµµ ¿À¹ö·ÎµùÇØ¾ß Çϳª ÀÌ ¿¹Á¦¿Í´Â Á÷Á¢ÀûÀÎ »ó°üÀÌ ¾ø¾î ¹«½ÃÇß´Ù.
´ÙÀ½Àº °ªÀ» 1¾¿ Áõ°¨½ÃÅ°´Â Áõ°¨ ¿¬»êÀÚ¸¦ ¿À¹ö·ÎµùÇØ º¸ÀÚ. ++ ¿¬»êÀº + 1°ú °°Àº ¿¬»êÀÌÁö¸¸ ÀÌ´Â ¼öÄ¡Çü¿¡¸¸ ÇØ´çµÇ¸ç °´Ã¼¿¡¼´Â Àǹ̰¡ ¿ÏÀüÈ÷ ´Þ¶óÁú ¼öµµ ÀÖ´Ù. ++Àº Çϳª ´õ ´Ã¸°´Ù´Â ¶æÀε¥ "Çϳª"°¡ ¹«¾ùÀ» ÀǹÌÇÏ´ÂÁö´Â Ŭ·¡½º¸¶´Ù ´Ù¸£´Ù.
TimePlusPlus |
|
using System;
class Time { private int hour, min, sec; public Time() { } public Time(int h, int m, int s) { hour = h; min = m; sec = s; } public void OutTime() { Console.WriteLine($"{hour}½Ã {min}ºÐ {sec}ÃÊ"); } public static Time operator ++(Time A) { Time T = new Time(); T.hour = A.hour; T.min = A.min; T.sec = A.sec;
T.sec++; T.min += T.sec / 60; T.sec %= 60; T.hour += T.min / 60; T.min %= 60; return T; } }
class CSTest { static void Main() { Time A = new Time(1, 1, 1); Time t1, t2; t1 = A++; t2 = ++A;
t1.OutTime(); t2.OutTime(); A.OutTime(); } } |
|
½ÇÇà°á°ú |
ÇöÀç ½Ã°£Àº 1½Ã 1ºÐ 1ÃÊÀÌ´Ù. ÇöÀç ½Ã°£Àº 1½Ã 1ºÐ 3ÃÊÀÌ´Ù. ÇöÀç ½Ã°£Àº 1½Ã 1ºÐ 3ÃÊÀÌ´Ù. |
++ ¿¬»êÀÚ´Â »çº»À» ¸¸µç ÈÄ Ãʸ¦ 1Áõ°¡½ÃÄÑ ±× »çº»À» ¸®ÅÏÇÑ´Ù. ºñ·Ï 1ÃÊ Áõ°¡½ÃÅ°´õ¶óµµ 9:59:59´Â ½Ã¿Í ºÐÀÌ ¿µÇâÀ» ¹ÞÀ» ¼ö ÀÖ¾î ÀÚ¸® ³ÑħÀº ¹Ýµå½Ã ó¸®ÇØ¾ß ÇÑ´Ù. ++ ¿¬»êÀÚ¿¡¼ ÇÇ¿¬»êÀÚ¸¦ Á÷Á¢ Áõ°¡½ÃÅ°Áö ¾Ê°í »çº»À» »ç¿ëÇÏ´Â ÀÌÀ¯´Â ÈÄÀ§ÇüÀº ÇÇ¿¬»êÀÚ°¡ Áõ°¡µÇ±â ÀüÀÇ °ªÀ» °¡Áö°í ÀÖ¾î¾ß Çϱ⠶§¹®ÀÌ´Ù.
ÀüÀ§Çü°ú ÈÄÀ§ÇüÀ¸·Î °¢°¢ È£ÃâÇØ º¸¾Ò´Âµ¥ Àß µ¿ÀÛÇÑ´Ù. ÈÄÀ§Çü A++À» ´ëÀÔ¹ÞÀº t1Àº Áõ°¡Çϱâ ÀüÀÇ °ªÀ» °¡Áö¸ç ÀüÀ§Çü ++A¸¦ ´ëÀÔ¹ÞÀº t2´Â Áõ°¡ ÈÄÀÇ °ªÀ» °¡Áø´Ù. Áõ°¡½ÃÅ°´Â ¿¬»êÀÚ¸¸ Àß ÀÛ¼ºÇØ µÎ¸é Áõ°¡¿Í Æò°¡ ¼ø¼´Â ÄÄÆÄÀÏ·¯°¡ ¾Ë¾Æ¼ °áÁ¤ÇÑ´Ù.
ij½ºÆ® ¿¬»êÀÚ¸¦ ¿À¹ö·ÎµùÇϸé Ŭ·¡½º¸¦ ¸¸µç »ç¶÷ÀÌ º¯È¯ °ø½ÄÀ» Á÷Á¢ Á¦°øÇÏ¿© ´Ù¸¥ ŸÀÔ°úÀÇ º¯È¯ ¹æ¹ýÀ» ÁöÁ¤ÇÒ ¼ö ÀÖ´Ù. ij½ºÆ® ¿¬»êÀÚ ÇÔ¼ö´Â ¼±¾ð Çü½ÄÀÌ ÀÏ¹Ý ¿¬»êÀÚ¿Í´Â ´Þ¸® Ư¼öÇÏ´Ù.
public static implicit(explicit) º¯È¯´ë»ó(Àμö)
ij½ºÆ® ¿¬»êÀÚ´Â ´ÜÇ× ¿¬»êÀÚÀ̹ǷΠÀμöµµ ¹Ýµå½Ã Çϳª¿©¾ß ÇÑ´Ù. ¾î¶² ŸÀÔÀ¸·Î ¹Ù²Ü °ÍÀΰ¡´Â ÇÔ¼öÀÇ À̸§À¸·Î ÁöÁ¤Çϴµ¥ ÀÌ À̸§Àº ¸®ÅÏ Å¸ÀÔ ÁöÁ¤À» °âÇÑ´Ù. Àμö·Î Àü´ÞµÈ ŸÀÔÀ» ¸®ÅϵǴ ŸÀÔÀ¸·Î º¯È¯ÇÑ´Ù°í »ý°¢ÇÏ¸é µÈ´Ù. implicit(¾Ï½ÃÀû), explicit(¸í½ÃÀû) Å°¿öµå´Â º¯È¯ ¹æ½ÄÀ» ÁöÁ¤ÇÑ´Ù. ¾Ï½ÃÀû º¯È¯À̶õ ÄÄÆÄÀÏ·¯ÀÇ ÀÚµ¿ º¯È¯ ¿¬»êÀÌ¸ç °ª ¼Õ½ÇÀÌ ¾øÀ» ¶§ »ç¿ëÇÑ´Ù. ¸í½ÃÀû º¯È¯Àº °ª ¼Õ½ÇÀÌ ¹ß»ýÇÒ °¡´É¼ºÀÌ ÀÖ¾î ij½ºÆÿ¡ ÀÇÇؼ¸¸ º¯È¯ÇÒ ¼ö ÀÖ´Ù.
´ÙÀ½ ¿¹Á¦´Â ½Ã°£°ú Á¤¼ö¸¦ »óÈ£ º¯È¯ÇÑ´Ù. ½Ã°£Àº ½Ã, ºÐ, ÃÊ·Î ±¸¼ºµÇÁö¸¸ Àý´ëÃÊ ´ÜÀ§·Î Ç¥ÇöÇÒ ¼ö ÀÖ´Ù. 2½Ã 10ºÐ 23ÃÊ´Â 2 * 3600 + 10 * 60 + 23 = 7823ÃÊ¿Í °°´Ù. ¹Ý´ë·Î Á¤¼ö¸¦ Àý´ëÃÊ·Î Çؼ®ÇÏ¿© Á¤¼ö°¡ ½Ã°£ °´Ã¼°¡ µÇ±âµµ ÇÑ´Ù. Àý´ëÃÊ´Â µÎ ½Ã°£ÀÇ °£°ÝÀ» °è»êÇÒ ¶§ ½Ç¿ëÀûÀÌ´Ù.
TimeInt |
|
using System;
class Time { public int hour, min, sec; public Time() { } public Time(int h, int m, int s) { hour = h; min = m; sec = s; } public void OutTime() { Console.WriteLine($"ÇöÀç ½Ã°£Àº {hour}½Ã {min}ºÐ {sec}ÃÊÀÌ´Ù."); } public static implicit operator int(Time T) { return T.hour * 3600 + T.min * 60 + T.sec; } public static explicit operator Time(int abs) { Time T = new Time(); T.hour = abs / 3600; T.min = (abs / 60) % 60; T.sec = abs % 60; return T; } }
class CSTest { static void Main() { Time Now = new Time(12, 30, 40); Now.OutTime(); int absec = Now; Console.WriteLine("Àý´ëÃÊ = {0}", absec); Time Then = new Time(); Then = (Time)12345; Then.OutTime(); } } |
|
½ÇÇà°á°ú |
ÇöÀç ½Ã°£Àº 12½Ã 30ºÐ 40ÃÊÀÌ´Ù. Àý´ëÃÊ = 45040 ÇöÀç ½Ã°£Àº 3½Ã 25ºÐ 45ÃÊÀÌ´Ù. |
TimeÀ» int·Î º¯È¯ÇÏ´Â ¿¬»êÀÚ¿Í int¸¦ TimeÀ¸·Î º¯È¯ÇÏ´Â ¾ç¹æÇâÀÇ Ä³½ºÆ® ¿¬»êÀÚ¸¦ Á¤ÀÇÇß´Ù. ½Ã°£À» Á¤¼ö·Î ¹Ù²Ü ¶§´Â ½Ã¿¡ 3600À» °öÇÏ°í ºÐ¿¡ 60À» °öÇÏ°í Ãʸ¦ ´õÇÑ´Ù. ¹Ý´ë·Î º¯È¯ÇÒ ¶§´Â Àý´ëÃʸ¦ °¢ ´ÜÀ§ÀÇ ÃÊ ´ÜÀ§·Î ³ª´« ÈÄ ÃÖ´ë°ªÀ¸·Î ³ª´« ³ª¸ÓÁö¸¦ ±¸ÇÑ´Ù.
Time °´Ã¼¸¦ Á¤¼ö·Î º¯È¯ÇÏ´Â ¿¬»êÀÚ´Â º°´Ù¸¥ À§ÇèÀÌ ¾ø¾î implicit¸¦ ºÙ¿© ¾Ï½ÃÀûÀ¸·Î ¼±¾ðÇß´Ù. ÇÏ·ç´Â ±æ¾î ºÁ¾ß 86400ÃÊ¿¡ ºÒ°úÇϸç ÀÌ °ªÀº intÀÇ ¹üÀ§¿¡ Æ÷ÇԵDZ⠶§¹®¿¡ ¹®Á¦¾ø´Ù. absec = Now ´ëÀÔ¹®¿¡ ij½ºÆ® ¿¬»êÀÚ¸¦ ¾²Áö ¾Ê¾Æµµ ÄÄÆÄÀÏ·¯°¡ ¾Ë¾Æ¼ º¯È¯ ¿¬»êÀÚ¸¦ È£ÃâÇÑ´Ù.
¹Ý¸é Á¤¼ö¸¦ Time °´Ã¼·Î º¯È¯ÇÏ´Â ¿¬»êÀÚ´Â À§ÇèÇÒ ¼öµµ ÀÖ¾î explicit¸¦ ºÙ¿© ¸í½ÃÀûÀ¸·Î ¼±¾ðÇß´Ù. Á¤¼ö°¡ 12345³ª 65300 Á¤µµ¶ó¸é À¯È¿ÇÑ Time °´Ã¼·Î º¯È¯µÇÁö¸¸ 123456789 °°Àº Å« °ªÀÌ¸é ½Ã°£°ªÀÌ ³Ê¹« Ä¿Á® ¹ö¸°´Ù. Àý´ëÃÊ°¡ À½¼ö¸é Ȳ´çÇÑ °á°ú°¡ ³ª¿Ã ¼öµµ ÀÖ¾î ¸í½ÃÀû º¯È¯¸¸ Çã¿ëÇÑ´Ù.
Then = 12345 ½ÄÀ¸·Î ¾Ï½ÃÀûÀ¸·Î º¯È¯ÇÒ ¼ö ¾øÀ¸¸ç ij½ºÆ® ¿¬»êÀÚ¸¦ ½á¼ Then = (Time)12345·Î ¸í½ÃÀû º¯È¯ÇØ¾ß ÇÑ´Ù. ij½ºÆ® ¿¬»êÀÚ¸¦ ½è´Ù´Â °ÍÀº Á¤¼ö°¡ À¯È¿ÇÑ ¹üÀ§³»¿¡ ÀÖÀ½À» º¸ÀåÇÏ¸ç ¸ðµç Ã¥ÀÓÀ» Áö°Ú´Ù´Â ¼±¾ðÀ̹ǷΠÄÄÆÄÀÏ·¯´Â ´õ ÀÌ»ó ½Ãºñ¸¦ °ÉÁö ¾Ê´Â´Ù. ¹°·Ð º¯È¯ ÈÄ¿¡ ¹ß»ýÇÏ´Â ¸ðµç ºÎÀÛ¿ëÀº °³¹ßÀÚ°¡ ´Ù µÚÁý¾î ½á¾ß ÇÑ´Ù.
ÄÄÆÄÀÏ·¯´Â º¯È¯ÀÌ 100% È®½ÇÈ÷ ÁøÂ¥·Î Á¤¸»·Î ¾ÈÀüÇÒ ¶§¸¸ ¾Ï½ÃÀû º¯È¯À» Çã¿ëÇÑ´Ù. Á¶±ÝÀÌ¶óµµ À§ÇèÇÑ º¯È¯Àº °³¹ßÀÚÀÇ ¸í½ÃÀûÀÎ Áö½Ã°¡ ÀÖ¾î¾ß ÇÑ´Ù. ÄÄÆÄÀÏ·¯´Â ¾Ë°í º¸¸é Âü ¼Ò½ÉÇÑ ³à¼®ÀÌ´Ù. ij½ºÆ® ¿¬»êÀÚ¸¦ Á¤ÀÇÇÒ ¶§µµ ¾ÈÀüÇÒ ¶§¸¸ implicit·Î Á¤ÀÇÇÏ¸ç °ª ¼Õ½Ç À§ÇèÀÌ ÀÖÀ» ¶§´Â explicit·Î Á¤ÀÇÇØ¾ß ÇÑ´Ù.
¶§·Î´Â ŸÀÔ º¯È¯ÀÌ ¿©·¯ ´Ü°è¸¦ °ÅÃÄ ÀϾ´Â ´ÙÁß Ä³½ºÆÃÀÌ ¹ß»ýÇÑ´Ù. À§ ¿¹Á¦¿¡ double d = Now; °°Àº Äڵ带 ÀÛ¼ºÇØ º¸ÀÚ. Time °´Ã¼¸¦ ½Ç¼ö·Î º¯È¯ÇÏ´Â ¿¬»êÀÚ´Â Á¤ÀÇÇÏÁö ¾Ê¾ÒÁö¸¸ ½ÇÁ¦·Î ÇØ º¸¸é ´ÙÀ½ °úÁ¤À» °ÅÃÄ ¾Æ¹« ¹®Á¦¾øÀÌ Àß º¯È¯µÈ´Ù.
TimeÀÌ int º¯È¯ ¿¬»êÀÚ¿¡ ÀÇÇØ int·Î ¸ÕÀú º¯È¯µÇ°í Á¤¼ö°¡ ´Ù½Ã ½Ç¼ö·Î º¯È¯µÈ´Ù. ÀÌ ¿¬»êÀÌ °¡´ÉÇÑ ÀÌÀ¯´Â Time °´Ã¼°¡ int·Î º¯È¯ÇÏ´Â ¾Ï½ÃÀûÀÎ ¿¬»êÀÚ¸¦ Á¦°øÇÏ°í Á¤¼ö´Â ½Ã½ºÅÛ¿¡ ÀÇÇØ ¾Ï½ÃÀûÀ¸·Î ½Ç¼ö·Î º¯È¯ °¡´ÉÇϱ⠶§¹®ÀÌ´Ù. º¯È¯ °úÁ¤À» ij½ºÆ® ¿¬»êÀڷΠǥ½ÃÇϸé double d = (double)(int)Now; ¿ä·¸°Ô µÈ´Ù.
Ŭ·¡½º³¢¸®µµ º¯È¯ °¡´ÉÇÏ´Ù. ´Ü, ¿¹¿ÜÀûÀ¸·Î »ó¼Ó °ü°èÀÇ Å¬·¡½º³¢¸®´Â º¯È¯ ¿¬»êÀÚ¸¦ Á¤ÀÇÇÒ ¼ö ¾ø´Ù. Á¤È®ÇÏ°Ô ¾ê±âÇÏÀÚ¸é ºÎÀÚ °ü°èÀÇ Å¬·¡½º³¢¸®´Â ¿ø·¡ º¯È¯ °¡´ÉÇØ º¯È¯ ¿¬»êÀÚ°¡ ÇÊ¿äÄ¡ ¾Ê´Ù. ÀÚ½Ä Å¸ÀÔÀº ºÎ¸ð ŸÀÔÀ¸·Î ¾ðÁ¦µçÁö º¯È¯ÇÒ ¼ö ÀÖÀ¸¸ç ºÎ¸ð ŸÀÔÀº ¸í½ÃÀû ij½ºÆÿ¡ ÀÇÇØ ÀÚ½Ä Å¸ÀÔÀ¸·Î º¯È¯ °¡´ÉÇÏ´Ù.
Ŭ·¡½º°£ÀÇ º¯È¯Àº ¼·¾¾¿Í Ⱦ¾Ã³·³ °°Àº ½Çü¿¡ ´ëÇÑ ´Ù¸¥ Ç¥ÇöÀ̰ųª ³í¸®ÀûÀÎ ¿¬°ü¼ºÀÌ ÀÖÀ» ¶§ ½Ç¿ëÀûÀÌ´Ù. ±×·¯³ª ¹®¹ýÀûÀ¸·Î °¡´ÉÇÏ´Ù Çصµ ½ÇÁúÀûÀ¸·Î Àǹ̰¡ ¾ø´Â °æ¿ìµµ ÀÖ´Ù. »ç¶÷À» ½Ã°£À¸·Î ¹Ù²Û´Ù°Å³ª Á¶ÆøÀÌ °¾ÆÁö°¡ µÇ´Â Åõµ ¾ø´Â º¯È¯Àº ÇÒ ÇÊ¿ä°¡ ¾ø´Ù. ´ÙÀ½ ¿¹Á¦´Â ¹Ð¸®¹ÌÅÍ¿Í ÀÎÄ¡ ´ÜÀ§¸¦ º¯È¯ÇÑ´Ù.
MiliInch |
|
using System;
class Inch { public double len; public Inch(double alen) { len = alen; } public void OutValue() { Console.WriteLine($"{len:F2}ÀÎÄ¡"); } public static implicit operator Mili(Inch i) { return new Mili((uint)(i.len * 25.4)); } public static implicit operator Inch(Mili m) { return new Inch(m.len / 25.4); } }
class Mili { public uint len; public Mili(uint alen) { len = alen; } public void OutValue() { Console.WriteLine($"{len}¹Ð¸®"); } }
class CSTest { static void Main() { Inch disk = new Inch(0); Mili shoes = new Mili(0);
disk.len = 3.5; shoes = disk; shoes.OutValue();
shoes.len = 275; disk = shoes; disk.OutValue(); } } |
|
½ÇÇà°á°ú |
88¹Ð¸® 10.83ÀÎÄ¡ |
Inch Ŭ·¡½º´Â ½Ç¼ö·Î µÈ ÀÎÄ¡¸¦ Ç¥ÇöÇϸç Mili Ŭ·¡½º´Â Á¤¼ö·ÎµÈ ¹Ð¸®¹ÌÅ͸¦ Ç¥ÇöÇÑ´Ù. µÎ ŸÀÔ°£ÀÇ º¯È¯ ¿¬»êÀÚ°¡ ¸ðµÎ Á¤ÀǵǾî ÀÖ¾î ¾ç¹æÇâÀ¸·Î º¯È¯ °¡´ÉÇÏ´Ù. 1ÀÎÄ¡´Â 25.4¹Ð¸®¹ÌÅÍÀ̹ǷΠÀÌ »ó¼ö¸¦ °öÇÏ°í ³ª´©¸é µÎ ŸÀÔÀ» ½±°Ô º¯È¯ÇÒ ¼ö ÀÖ´Ù. Main¿¡¼´Â 3.5ÀÎÄ¡°¡ ¸î ¹Ð¸®¹ÌÅÍÀÎÁö, 275¹Ð¸®¹ÌÅÍ°¡ ¸î ÀÎÄ¡ÀÎÁö °è»êÇÏ¿© Ãâ·ÂÇß´Ù.
¾çÂÊÀ¸·Î º¯È¯ÇÏ´Â ±â´ÉÀ» »ç¿ëÇßÀ¸¹Ç·Î µÎ °³ÀÇ º¯È¯ ÇÔ¼ö°¡ ¸ðµÎ ÇÊ¿äÇÏ´Ù. º¯È¯ ÇÔ¼öÀÇ ¼Ò¼ÓÀº Áß¿äÇÏÁö ¾ÊÀºµ¥ ¾çÂÊ Å¬·¡½º ¾îµð¿¡³ª Á¸ÀçÇÏ¸é µÈ´Ù. ¾îÂ÷ÇÇ º¯È¯ ÇÔ¼ö´Â Á¤ÀûÀ̹ǷΠ¿¬»êÀÚ°¡ ¼±¾ðµÈ Ŭ·¡½º´Â ³í¸®ÀûÀÎ ¼Ò¼ÓÀÏ »ÓÀÌ´Ù. ¿¹Á¦¿¡¼´Â Inch Ŭ·¡½º¿¡ µÎ ¿¬»êÀÚ¸¦ Á¤ÀÇÇߴµ¥ Mili Ŭ·¡½º·Î ¿Å°Üµµ »ó°ü¾øÀ¸¸ç µÎ ¿¬»êÀÚ¸¦ ¾çÂÊ¿¡ Çϳª¾¿ Âõ¾î ³õ¾Æµµ µÈ´Ù.
¿À¹ö·ÎµùÀº Æí¸®ÇÑ ±â´ÉÀÌÁö¸¸ °úÇÏ°Ô ¾²¸é À§ÇèÇÑ ¸éµµ ÀÖ¾î ÁÖÀÇÇÒ ÇÊ¿ä°¡ ÀÖ´Ù. ¿À¹ö·ÎµùµÈ ¸Þ¼µå¸¦ È£ÃâÇÒ ¶§ ¸Þ¼µå¸¦ ¼±ÅÃÇÏ´Â °ÍÀº ÄÄÆÄÀÏ·¯ÀÇ Ã¥ÀÓÀ̸ç ÄÄÆÄÀÏ Áß¿¡ °áÁ¤µÈ´Ù. ±×·¡¼ ¿À¹ö·ÎµùÀÌ º¹ÀâÇØÁö¸é ÄÄÆÄÀÏ ½Ã°£ÀÌ ¿À·¡ °É¸®´Âµ¥ ´ÙÇàÈ÷ ½ÇÇà ¼Óµµ¿Í´Â »ó°üÀÌ ¾ø´Ù.
ÄÄÆÄÀÏ·¯´Â È£Ãâ¹®ÀÇ Àμö °³¼ö¿Í ŸÀÔ(½Ã±×´Ïó)À» º¸°í ÀûÀýÇÑ ¸Þ¼µå¸¦ ¼±ÅÃÇϴµ¥ À̶§ ¿À¹ö·Îµå °áÁ¤Çϱâ(Overload Resolution)¶ó´Â º¹ÀâÇÑ ³»ºÎ Á¤Ã¥ÀÌ Àû¿ëµÈ´Ù. ÀÌ Á¤Ã¥¿¡´Â ŸÀÔ ºñ±³»Ó¸¸ ¾Æ´Ï¶ó ref, out µîÀÇ ÁöÁ¤ÀÚ, ŸÀÔ°£ÀÇ ¾Ï½ÃÀû, ¸í½ÃÀû º¯È¯ ±ÔÄ¢±îÁö °í·ÁµÇ¾î »ó»ó ÀÌ»óÀ¸·Î º¹ÀâÇÏ´Ù.
Á¤È®È÷ ÀÏÄ¡ÇÏ´Â ¸Þ¼µå°¡ ¹ß°ßµÇ¸é ¹®Á¦¾øÁö¸¸ ±×·¸Áö ¾ÊÀ» °æ¿ì ÄÄÆÄÀÏ·¯°¡ Àç·®²¯ È£ÃâÇÒ ¸Þ¼µå¸¦ ¼±ÅÃÇÑ´Ù. ¿ì¼± È£Ãâ °¡´ÉÇÑ Èĺ¸ ¸ñ·Ï(Applicable)À» ÀÛ¼ºÇÏ°í ÀÌ Áß¿¡ ±×³ª¸¶ °¡Àå ³ªÀº(Better) ¸Þ¼µå¸¦ ¼±ÅÃÇÑ´Ù. ±×³ª¸¶ ³´´Ù´Â ±âÁØÀº ŸÀÔÀÌ °¡Àå ±ÙÁ¢ÇÑ´Ù´Â ¶æÀÌ´Ù. ½Ã±×´Ïó°¡ ÀÏÄ¡ÇÏ´Â ¸Þ¼µå°¡ ¾ø´õ¶óµµ ¾Ï½ÃÀû º¯È¯ÀÌ °¡´ÉÇϸé ÄÄÆÄÀÏ·¯°¡ ¾Ë¾Æ¼ º¯È¯ÇÑ ÈÄ È£ÃâÇÑ´Ù.
OverMethod |
|
using System;
class CSTest { static void Method(short a) { Console.WriteLine("short"); } static void Method(int a) { Console.WriteLine("int"); } static void Method(uint a) { Console.WriteLine("uint"); } static void Method(long a) { Console.WriteLine("long"); } static void Method(double a) { Console.WriteLine("double"); } static void Main() { short s = 1234; Method(s); } } |
|
½ÇÇà°á°ú |
short |
Method ¸Þ¼µå°¡ 5°³ÀÇ ½Ã±×´Ïó·Î ¿À¹ö·ÎµùµÇ¾î ÀÖÀ¸¸ç °¢ ¸Þ¼µå´Â ÀÚ½ÅÀÌ È£ÃâµÇ¾ú´Ù´Â °ÍÀ» ȸéÀ¸·Î Ãâ·ÂÇÑ´Ù. Main¿¡¼ shortÇü º¯¼ö¸¦ ¼±¾ðÇÑ ÈÄ ÀÌ º¯¼ö¸¦ Method·Î ³Ñ°å´Ù. À̶§ °ú¿¬ ¾î¶² ¸Þ¼µå°¡ ¼±ÅÃµÉ °ÍÀΰ¡°¡ ¹®Á¦´Ù. ÀÌ °æ¿ì short¸¦ ¹Þ´Â ¸Þ¼µå°¡ ÀÖ¾î Method(short)°¡ È£ÃâµÈ´Ù. ¸¸¾à Method(short)°¡ ¾ø´Ù¸é ¾î¶»°Ô µÉ±î? ÀÌ ¸Þ¼µå¸¦ ÁÖ¼® ó¸®ÇÑ ÈÄ ´Ù½Ã ½ÇÇàÇØ º¸¸é Method(int)°¡ È£ÃâµÈ´Ù. short´Â ¾Ï½ÃÀûÀ¸·Î int·Î º¯È¯ °¡´ÉÇϹǷΠÄÄÆÄÀÏ·¯´Â Method(int)°¡ shortÇü Àμö¸¦ ¹Þ¾Æµµ ¹®Á¦ ¾ø´Ù°í ÆÇ´ÜÇÑ´Ù.
Method(int)µµ ÁÖ¼® ó¸®ÇÏ¸é ³²Àº ¼¼ °³ÀÇ ¸Þ¼µå Áß ´©°¡ È£ÃâµÉ±î? Method(uint)°¡ ±ÙÁ¢ÇØ º¸ÀÌÁö¸¸ ½ÇÇàÇØ º¸¸é Method(long)ÀÌ È£ÃâµÈ´Ù. uint´Â ºÎÈ£¸¦ Ç¥½ÃÇÒ ¼ö ¾ø¾î short¿Í ¾Ï½ÃÀûÀ¸·Î ȣȯµÇÁö ¾ÊÀ¸¸ç longÀÌ ´õ °¡±õ´Ù. TimeInt ¿¹Á¦¿¡ ´ÙÀ½ Äڵ带 ÀÛ¼ºÇϸé Á¤¼ö°¡ Ãâ·ÂµÈ´Ù.
Time Now = new Time(12, 34, 56);
Console.WriteLine(Now);
TimeÀ» Àμö·Î ¹Þ´Â WriteLine ¸Þ¼µå´Â ¾øÁö¸¸ ¾Ï½ÃÀû º¯È¯¿¡ ÀÇÇØ Now°¡ int°¡ µÉ ¼ö ÀÖ´Ù. ¸¸¾à Time Ŭ·¡½º°¡ double·Î º¯È¯Çϴ ij½ºÆ® ¿¬»êÀÚ¸¦ Á¤ÀÇÇÏ¸é ½Ç¼ö·Îµµ Ãâ·ÂµÈ´Ù. ÄÄÆÄÀÏ·¯´Â Ä£ÀýÇؼ °¡´ÉÇÑ ÇÔ¼ö¸¦ ã¾Æ Àû¿ëÇÏÁö¸¸ ¶§·Î´Â °ú´Ù Ä£Àý¿¡ ÀÇÇØ ºÎÁ¤È®ÇÑ ÇÔ¼ö°¡ È£ÃâµÉ ¼öµµ ÀÖ´Ù.
ij½ºÆ® ¿¬»êÀÚ¿¡ ´ëÇؼµµ ¿ª½Ã ¿À¹ö·Îµù ¹®Á¦°¡ ÀÖ´Ù. ¿©·¯ °³ÀÇ Ä³½ºÆ® ¿¬»êÀÚ°¡ ¾Ï½ÃÀûÀ¸·Î ¿À¹ö·ÎµùµÇ¾î ÀÖÀ» ¶§ ¾î¶² ¿¬»êÀÚ¿¡ ÀÇÇØ º¯È¯µÉ °ÍÀΰ¡´Â ÄÄÆÄÀÏ·¯°¡ ¾ö°ÝÇÑ ³»ºÎ ±ÔÄ¢¿¡ ÀÇ°ÅÇÏ¿© Áö ¸¾´ë·Î °áÁ¤ÇÑ´Ù. ´ÙÀ½Àº Time Ŭ·¡½º¿¡ Á¤¼ö ¹× ½Ç¼ö º¯È¯ ¿¬»êÀÚ¸¦ µ¿½Ã¿¡ Á¤ÀÇÇÑ °ÍÀÌ´Ù. ½Ã°£À» Á¤¼öºÎ¿¡ µÎ°í ºÐÀ» ¼Ò¼öºÎ¿¡ µÎ´Â ½ÄÀ¸·Î ½Ç¼ö·Î º¯È¯ °¡´ÉÇÏ´Ù.
CastOver |
½ÇÇà°á°ú |
using System;
class Time { public int hour, min, sec; public Time() { } public Time(int h, int m, int s) { hour = h; min = m; sec = s; } public static implicit operator int(Time T) { return T.hour * 3600 + T.min * 60 + T.sec; } public static implicit operator double(Time T) { return T.hour + T.min / 100.0; } }
class CSTest { static void Main() { Time Now = new Time(12, 34, 56); Console.WriteLine((int)Now); Console.WriteLine((double)Now); Console.WriteLine(Now); } } |
45296 12.34 45296 |
Main¿¡¼ Time °´Ã¼¸¦ »ý¼ºÇÏ°í ¼¼ ¹ø Ãâ·ÂÇߴµ¥ µÎ ¹øÀº ij½ºÆ® ¿¬»êÀÚ¸¦ »ç¿ëÇß°í ÇÑ ¹øÀº ¾Ï½ÃÀûÀ¸·Î Ãâ·ÂÇß´Ù. ¸í½ÃÀûÀ¸·Î ij½ºÆÃÇÒ ¶§´Â ÁöÁ¤ÇÑ Å¸ÀÔ¿¡ ¸Â´Â º¯È¯ ¿¬»êÀÚ°¡ È£ÃâµÇÁö¸¸ ¾Ï½ÃÀûÀ¸·Î È£ÃâÇÒ ¶§´Â ¾î¶² ¹öÀüÀÌ È£ÃâµÉÁö ¾Ë±â ½±Áö ¾Ê´Ù. ÀÌ ¿¹Á¦ÀÇ °æ¿ì´Â Á¤¼ö·Î º¯È¯µÇ¾î Ãâ·ÂµÇ´Âµ¥ ÀǵµÇÑ ¹Ù¶ó¸é ´ÙÇàÀÌÁö¸¸ ±×·¸Áö ¾ÊÀ» ¼öµµ ÀÖ´Ù. »ç¿ëÀÚ´Â ½Ç¼ö°¡ ´õ Å« ŸÀÔÀ̹ǷΠ½Ç¼ö·Î º¯È¯µÇ´Â °ÍÀÌ ´õ ÀÚ¿¬½º·´´Ù°í »ý°¢ÇÒ ¼öµµ ÀÖÀ¸¸ç ÀÌ·¸°Ô ±â´ëÇß´Ù¸é ¿øÇÏ´Â °Í°ú´Â ´Ù¸¥ °á°ú°¡ ³ª¿Â °ÍÀÌ´Ù.
20°³ Á¤µµÀÇ ¿À¹ö·Îµå°¡ Á¸ÀçÇÏ´Â ¸Þ¼µå¶ó¸é °áÄÚ °£´ÜÇÑ ¹®Á¦°¡ ¾Æ´Ï´Ù. ÄÄÆÄÀÏ ¿¡·¯´Â ¹ß»ýÇÏÁö ¾Ê¾Æ °³¹ßÀÚ´Â ¿øÇϴ´ë·Î È£ÃâµÇ¾ú´Ù°í »ý°¢ÇÏ°í ³Ñ¾î°¡ ¹ö¸± ¼öµµ ÀÖÀ¸¸ç À߸øµÈ È£ÃâÀÌ ¾ðÁ¦ ¸»½éÀ» ÀÏÀ¸Å³Áö ¾Ë ¼ö ¾ø´Ù. ÃÖ¾ÇÀÇ ½Ã³ª¸®¿À´Â ÀÌ È£ÃâÀÌ ¸±¸®ÁîµÉ ¶§±îÁö ¹ß°¢µÇÁö ¾Ê´Â °æ¿ìÀε¥ ÄÄÆÄÀÏ·¯´Â µÞÀÏÀ» Ã¥ÀÓÁöÁö ¾Ê´Â´Ù. »ç½Ç Ã¥ÀÓÁú ´É·Âµµ ¾ø´Ù. ±×·¡¼ ÀÌ·± ¾Ö¸ÅÇÑ °æ¿ì´Â °¡±ÞÀû ¸¸µéÁö ¸»¾Æ¾ß ÇÑ´Ù. ´ÙÀ½ ¿¹Á¦´Â ¾Æ¿¹ ¿¡·¯·Î 󸮵Ǵ ±Ø´ÜÀûÀÎ °æ¿ìÀÌ´Ù.
OverError |
using System;
class Time { public int hour, min, sec; public Time() { } public Time(int h, int m, int s) { hour = h; min = m; sec = s; } public static implicit operator int(Time T) { return T.hour * 3600 + T.min * 60 + T.sec; } public static explicit operator Time(int abs) { Time T = new Time(); T.hour = abs / 3600; T.min = (abs / 60) % 60; T.sec = abs % 60; return T; } }
class CSTest { static void Method(int a, Time b) { Console.WriteLine("int, Time"); } static void Method(Time a, int b) { Console.WriteLine("Time, int"); } static void Main() { Time Now = new Time(12, 34, 56); int i = 1234;
Method(i, Now); Method(Now, i); Method(Now, Now); Method(i, i); } } |
Time Ŭ·¡½º´Â TimeInt ¿¹Á¦ÀÇ °Í°ú °°À¸¸ç Á¤¼ö¿Í Time°£ÀÇ »óÈ£ º¯È¯ ¿¬»êÀÚ°¡ Á¤ÀǵǾî ÀÖ´Ù. Method´Â int¿Í TimeÀ» ¹Þ´Â ¹öÀü°ú Time°ú int¸¦ ¹Þ´Â µÎ °³ÀÇ ¹öÀüÀÌ Á¤ÀǵǾî ÀÖÀ¸¸ç Main¿¡¼ Time °´Ã¼¿Í intÇü º¯¼ö·Î Method¸¦ È£ÃâÇÑ´Ù. À̶§ ¾ÕÀÇ µÎ È£ÃâÀº Á¤È®ÇÏ°Ô ÀÏÄ¡ÇÏ´Â ¸Þ¼µå°¡ ÀÖ¾î ¹®Á¦°¡ ¾ø´Ù.
±×·¯³ª µÚÂÊ µÎ °³ÀÇ È£ÃâÀº ¾Ö¸ÅÇÏ¿© ÄÄÆÄÀÏ °ÅºÎµÈ´Ù. Method(Now, Now) È£Ãâ¹®Àº Á¤È®ÇÑ ¹öÀüÀº ¾ø°í ±×³ª¸¶ ³ªÀº ¹öÀüÀ» ã´Â´Ù. ÄÄÆÄÀÏ·¯´Â ³»ºÎ ±ÔÄ¢¿¡ ÀÇÇØ È£Ãâ¹®°ú ¾î¿ï¸®´Â ¸Þ¼µå¸¦ ã°í ±× Áß °¡Àå ÀûÇÕÇÑ ¸Þ¼µå¸¦ ¼±ÅÃÇÏ·Á°í ½ÃµµÇÑ´Ù. ±×·±µ¥ µÎ MethodÀÇ Á¡¼ö°¡ ¿ÏÀüÈ÷ °°¾Æ ¾î¶² °ÍÀÌ ´õ ³´´Ù°í °áÁ¤ÇÒ ¼ö ¾ø´Ù.
Á¸ÀçÇÏ´Â ¸Þ¼µå¿¡ ³¢¿ö ¸ÂÃß·Á¸é ¾î·µç ÇϳªÀÇ TimeÀ» int·Î º¯È¯ÇØ¾ß Çϴµ¥ ¼ø¼¿Ü¿¡´Â Â÷ÀÌ°¡ ÀüÇô ¾ø´Ù. ¸¶Áö¸· È£Ãâ¹®ÀÎ Method(i, i)µµ ¸¶Âù°¡Áö ÀÌÀ¯·Î ¾Ö¸ÅÇÏ´Ù. ÀÌ·± °æ¿ì¸¦ ¸¸³ª¸é ÄÄÆÄÀÏ·¯´Â ´õ ÀÌ»ó Àß³ üÇÏÁö ¾ÊÀ¸¸ç Ç׺¹ÀÇ Ç¥½Ã·Î ¼¶¶àÇÑ ¿¡·¯ ¸Þ½ÃÁö¸¦ Ãâ·ÂÇÑ´Ù. µÑ Áß Çϳª¸¦ ´ëÃæ °ñ¶ó ÁÙ ¼ö ÀÖÁö¸¸ ±× °á°ú¿¡ ´ëÇØ Ã¥ÀÓÁú ¼ö ¾ø±â ¶§¹®ÀÌ´Ù.