C#¿¡¼´Â ¿°ÅÇü(Enumeration)À̶ó ºÒ¸®´Â µ¶Æ¯ÇÑ ³ðÀÌ Á¸ÀçÇÕ´Ï´Ù. ¹è¿°ú ºñ½ÁÇÑ ¸éµµ ÀÖÁö¸¸ ¹è¿Àº ¾Æ´Ï°í, º¤ÅͶó°í ¸»Çϱ⵵ ¾Ö¸ÅÇÑ ¼º°ÝÀ» Áö´Ï°í ÀÖ½À´Ï´Ù. ±×·¡¼ ¿°ÅÇüÀ̶ó°í µ¶¸³ÀûÀÎ À̸§À» °¡Áø ³ðÀÌÁÒ. ¿°ÅÇüÀÇ Á¤ÀǸ¦ ¾Ë¾Æº¼±î¿ä?
|
¢Ã ¿°Å(enum/enumeration) |
|
q System.Enum¿¡¼ »ó¼ÓµÇ¾î ³»ºÎ ±âº» Çü½Ä °ª¿¡ ´ëÇÑ º°ÄªÀ» Á¦°øÇϴ Ưº°ÇÑ À¯ÇüÀÇ °ªÅ¸ÀÔÀÔ´Ï´Ù. ¿°ÅÇüÀº À̸§, ³»ºÎ Çü½Ä ¹× Çʵå ÁýÇÕÀ» °¡Áö¸ç, ³»ºÎ Çü½ÄÀº ±âº» Á¦°øµÇ´Â ºÎÈ£ ÀÖ´Â Á¤¼ö ¹× ºÎÈ£ ¾ø´Â Á¤¼ö Çü½Ä(Byte, Int32, UInt64 µî) Áß Çϳª¿©¾ß ÇÕ´Ï´Ù. °¢ Çʵå´Â »ó¼ö¸¦ ³ªÅ¸³»´Â Á¤Àû ¸®ÅÍ·² ÇʵåÀÔ´Ï´Ù. »ç¿ëÀÚ°¡ »ç¿ëÇÏ´Â °¢ ¾ð¾î´Â °¢ Çʵ忡 ³»ºÎ Çü½ÄÀÇ Æ¯Á¤ °ªÀ» ÇÒ´çÇÕ´Ï´Ù. |
ÀÌ Á¤ÀÇ´Â .NET Framework SDK ¼³¸í¼¿¡¼ °¡Á®¿Â ³»¿ëÀÔ´Ï´Ù. Á¤ÀǸ¸ º¸¸é ±²ÀåÈ÷ ¾î·Á¿î ³ð °°±º¿ä. ¿¹Á¦¸¦ º¸¸é ½±°Ô ÀÌÇØÇÒ ¼ö ÀÖÀ» °ÍÀÔ´Ï´Ù. ¿¹Á¦¸¦ º¸½ÃÁÒ.
¿°ÅÇüÀÇ Æ¯Â¡ 1
n System.Enum
n public abstract class Enum : IComparable, IFormattable, IConvertible
n À̸§À» °¡Áö´Â Á¤Àû Á¤¼öÇü »ó¼öÀÌ´Ù.
n »ó¼öÀ̹ǷΠ°ªÀÌ Çѹø ¼³Á¤µÇ¸é º¯°æÇÒ ¼ö ¾ø´Ù.
|
& |
EnumTest.cs |
Ü ¿°ÅÇüÀ» Å×½ºÆ®ÇÏ´Â ¿¹Á¦ |
|
using System; class EnumTest{ enum Numbers{one, two, three, four, five, six, seven}; public static void Main(){ for(Numbers i=Numbers.one; i<=Numbers.seven; i++) Console.Write(i+"="+(int)i+"\t"); }//main }//class | ||
|
C:\C#Example\02>csc EnumTest.cs C:\C#Example\02>EnumTest one=0 two=1 three=2 four=3 five=4 six=5 seven=6 | ||
±×·³ ¿¹Á¦¸¦ º¸¸é¼ ¼³¸íÀ» µå¸®°Ú½À´Ï´Ù. ¸ÕÀú Numbers ¶ó´Â ¿°ÅÇüÀ» ¼±¾ðÇÏ¿´½À´Ï´Ù.
n enum Numbers {one , two , three , four , five , six , seven};
¿°ÅÇüÀ» ¼±¾ðÇÒ ¶§ »ç¿ëÇϴ Ű¿öµå´Â enumÀÔ´Ï´Ù. ÀÌ Å°¿öµå¸¦ »ç¿ëÇÏ´Â Çü½ÄÀº ´ÙÀ½°ú °°½À´Ï´Ù.
|
¿°ÅÇüÀ» ¼±¾ðÇÏ´Â ¹æ¹ý |
|
enum name { ¿°ÅÇü ¸®½ºÆ® }; |
Ç¥ 2-10 ¿°ÅÇüÀ» ¼±¾ðÇÏ´Â ¹æ¹ý
À§¿Í °°Àº ¹æ¹ýÀ¸·Î ¿°ÅÇüÀ» ¼±¾ðÇÕ´Ï´Ù. nameÀº ¿°ÅÇüÀ» ´ëÇ¥ÇÏ´Â À̸§ÀÔ´Ï´Ù. ¿¹Á¦¿¡¼´Â Numbers°¡ »ç¿ëµÇ¾ú½À´Ï´Ù. ¿©±â±îÁö´Â ÀÌ»óÇÑ °ÍÀº ¾ø½À´Ï´Ù. ÀÌÁ¦ ÀÌ»óÇÑ °ÍÀÌ ³ª¿É´Ï´Ù.
n for(Numbers i=Numbers.one; i<=Numbers.seven; i++)
n Console.Write(i+"="+(int)i+"\t");
ù¹øÂ° i´Â ¿°ÅÇüÀÇ ¸â¹öµéÀ» ¶æÇÕ´Ï´Ù. ÀÌ ¸â¹ö´Â ¹®ÀÚ¿·Î ÀνĵDZ⠶§¹®¿¡ ¹Ù·Î »ç¿ëÇÏ·Á°í ÇÑ´Ù¸é À§ÀÇ ¸í·É ÇÁ·ÒÇÁÆ® â¿¡ Ãâ·ÂµÈ °Íó·³ ¹®ÀڷΠ󸮵˴ϴÙ. µû¶ó¼ ¿°ÅÇüÀÇ ¸â¹ö¸¦ ¼ö·Î »ç¿ëÇÏ·Á¸é ¹Ýµå½Ã Çüº¯È¯À» ÇØÁÖ¾î¾ß ÇÕ´Ï´Ù. ¿°ÅÇüÀº ±âº»ÀûÀ¸·Î Á¤¼öÇü »ó¼ö·Î ¼³Á¤µË´Ï´Ù. µû¶ó¼ µÎ¹øÂ°ÀÇ i ó·³ (int)¸¦ »ç¿ëÇÏ¿© intÇüÀ¸·Î Çüº¯È¯À» ÇÏ¸é ºñ·Î¼Ò¹®ÀÚ¿¿¡¼ Á¤¼öÇü »ó¼ö°¡ µÇ´Â °ÍÀÔ´Ï´Ù. ±×·±µ¥ ÀÌ Á¤¼öÇü »ó¼öÀÇ °ªÀº óÀ½ ³ª¿À´Â ³ðÀÌ 0ÀÇ °ªÀ» °®°í ³ª¸ÓÁö´Â 1¾¿ Áõ°¡ÇÏ´Â ¼ºÁúÀÌ ÀÖ½À´Ï´Ù. Áï Numbers.oneÀº 0À̰í, Numbers.sevenÀº 6ÀÌ µÇ´Â °ÍÀÔ´Ï´Ù. ±×·³ Á¶±Ý ´Ù¸¥ ¿¹Á¦¸¦ º¸¸é¼ °è¼Ó ¼³¸í µå¸®°Ú½À´Ï´Ù.
¿°ÅÇüÀÇ Æ¯Â¡ 2
n ¿°ÅÇüÀÇ µðÆúÆ®ÇüÀº intÇüÀÌ´Ù.
n ¸â¹öµéÀÇ ÃʱⰪÀº 0ºÎÅÍ ½ÃÀÛÇØ¼ 1¾¿ Áõ°¡ÇÑ´Ù.
|
& |
EnumTest1.cs |
Ü ¿°ÅÇüÀÇ °ªÀ» ¼³Á¤ÇÏ´Â ¿¹Á¦ |
|
using System; class EnumTest1{ enum Numbers{one, two=2, three, four, five, six, seven}; public static void Main(){ int[] num=new int[7]; num[0]=(int)Numbers.one; num[1]=(int)Numbers.two; num[2]=(int)Numbers.three; num[3]=(int)Numbers.four; num[4]=(int)Numbers.five; num[5]=(int)Numbers.six; num[6]=(int)Numbers.seven; for(int i=0; i<7; i++) Console.Write(num[i]+"\t"); }//main }//class | ||
|
C:\C#Example\12>csc EnumTest1.cs C:\C#Example\12>EnumTest1 0 2 3 4 5 6 7 | ||
¾Õ¿¡¼ Å×½ºÆ®ÇÑ ¿¹Á¦¿¡¼ ¾à°£ ¼öÁ¤ÇÑ ¿¹Á¦ÀÔ´Ï´Ù. ¹Ù·Î ¿°ÅÇüÀ» ¼±¾ðÇØÁÖ´Â ºÎºÐÀ» Á¶±Ý °íÃÄ ÁÖ¾ú½À´Ï´Ù.
n enum Numbers {one, two=2, three, four, five, six, seven};
two = 2 ¶ó°í °ªÀ» ¼³Á¤ÇØ ÁÖ¾ú½À´Ï´Ù. ±×·¯ÀÚ °á°ú¿¡¼ seven = 7 À̶ó´Â °á°ú°¡ ³ª¿Ô½À´Ï´Ù. ¿©±â¿¡¼ ¿°ÅÇüÀÇ µÎ¹øÂ° Ư¡ÀÌ ³ª¿É´Ï´Ù. °ªÀ» ¼³Á¤ÇØÁÖ¸é ¸â¹ö´Â ±× °ªÀ» °®°í ±× ´ÙÀ½ ¸â¹ö´Â ¼³Á¤µÈ °ª¿¡¼ 1¾¿ Áõ°¡ÇÏ´Â °ªÀ» °®°Ô µË´Ï´Ù.
|
¿°ÅÇü¿¡¼ »ç¿ëÇÒ ¼ö ÀÖ´Â Çü |
|
byte, sbyte, short, ushort, int, uint, long, ulong |
¿°ÅÇüÀÇ Æ¯Â¡ 3
n Áß°£°ªÀ» »õ·Î ¼³Á¤Çϸé ÀÌÈÄÀÇ ¸â¹öµéÀÇ °ªÀº º¯°æµÈ °ª¿¡¼ºÎÅÍ 1¾¿ Áõ°¡ÇÑ´Ù.
¿°ÅÇü¿¡¼ ÇÒ´çÇÒ ¼ö ÀÖ´Â °ªÀº char¸¦ Á¦¿ÜÇÑ Á¤¼öÇü °ªÀ» »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù. À̰ÍÀ¸·Î ¿°ÅÇü¿¡ ´ëÇØ¼ ¾Ë¾Æ º¸¾Ò½À´Ï´Ù. ¿°ÅÇüÀº óÀ½ °ªÀÌ 0ºÎÅÍ ½ÃÀÛÇϰí, 1¾¿ Áõ°¡ ÇÑ´Ù´Â »ç½Ç°ú, Áß°£¿¡ °ªÀ» ¼³Á¤ÇØ ÁÖ¸é ±× ´ÙÀ½ÀÇ °ªÀº ¼³Á¤µÈ °ª¿¡¼ 1¾¿ Áõ°¡ ÇÑ´Ù´Â »ç½Ç, ±×¸®°í Çü º¯È¯À» ÇØÁÖ¾î¾ß ÇÑ´Ù´Â »ç½Ç¸¸ ¾Ë°í ÀÖÀ¸¸é ±×¸® ¾î·Á¿ï °Í ¾ø´Â ³ðÀÔ´Ï´Ù.
| jabookÀúÀÚ¸íÇÔ |
|
Á¦¸ñ:¼Ò¼³°°ÀºC# Á¦2°ÀÇ ÀúÀÚ:ÃÖ¿µ°ü |