Piece

[C#] iterating enum type

More Code 2018. 7. 9. 06:02

enum type을 iteration하려면 어떻게 해야할까?


예를 들어서 아래와 같이 일주일의 요일이 담긴 emun type인 Days가 있다고 하자.

enum Days { Sun, Mon, Tue, Wed, Thu, Fri, Sat };

Days를 iteration하여 아래와 같이 출력하려고 한다.

Sun
Mon
Tue
Wed
Thu
Fri
Sat

어떻게 해야할까?


Enum.GetValues()를 이용하여, 아래와 같이 해주면 된다.

Type type = typeof(Days);
Array array = Enum.GetValues(type);
foreach (var value in array) {
Console.WriteLine(value);
}

Environment.SpecialFolder enum type을 iteration해보자.


Environment.SpecialFolder에는 Windows system에서 사용하는 특별한 폴더들이 들어있다.


(참고 : Environment.SpecialFolder Enumeration)

Type type = typeof(Environment.SpecialFolder);
Array array = Enum.GetValues(type);
foreach (var value in array) {
Environment.SpecialFolder specialFolder = (Environment.SpecialFolder) value;
string folder = Environment.GetFolderPath(specialFolder);
Console.WriteLine($"{value} : {folder}");
}

출력 결과는 아래와 같다.

Desktop : C:\Users\amodo\Desktop
Programs : C:\Users\amodo\AppData\Roaming\Microsoft\Windows\Start Menu\Programs
MyDocuments : C:\Users\amodo\Documents
MyDocuments : C:\Users\amodo\Documents
Favorites : C:\Users\amodo\Favorites
Startup : C:\Users\amodo\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup
Recent : C:\Users\amodo\AppData\Roaming\Microsoft\Windows\Recent
SendTo : C:\Users\amodo\AppData\Roaming\Microsoft\Windows\SendTo
StartMenu : C:\Users\amodo\AppData\Roaming\Microsoft\Windows\Start Menu
MyMusic : C:\Users\amodo\Music
MyVideos : C:\Users\amodo\Videos
DesktopDirectory : C:\Users\amodo\Desktop
MyComputer :
NetworkShortcuts : C:\Users\amodo\AppData\Roaming\Microsoft\Windows\Network Shortcuts
Fonts : C:\Windows\Fonts
Templates : C:\Users\amodo\AppData\Roaming\Microsoft\Windows\Templates
CommonStartMenu : C:\ProgramData\Microsoft\Windows\Start Menu
CommonPrograms : C:\ProgramData\Microsoft\Windows\Start Menu\Programs
CommonStartup : C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Startup
CommonDesktopDirectory : C:\Users\Public\Desktop
ApplicationData : C:\Users\amodo\AppData\Roaming
PrinterShortcuts : C:\Users\amodo\AppData\Roaming\Microsoft\Windows\Printer Shortcuts
LocalApplicationData : C:\Users\amodo\AppData\Local
InternetCache : C:\Users\amodo\AppData\Local\Microsoft\Windows\INetCache
Cookies : C:\Users\amodo\AppData\Local\Microsoft\Windows\INetCookies
History : C:\Users\amodo\AppData\Local\Microsoft\Windows\History
CommonApplicationData : C:\ProgramData
Windows : C:\Windows
System : C:\Windows\system32
ProgramFiles : C:\Program Files (x86)
MyPictures : C:\Users\amodo\Pictures
UserProfile : C:\Users\amodo
SystemX86 : C:\Windows\SysWOW64
ProgramFilesX86 : C:\Program Files (x86)
CommonProgramFiles : C:\Program Files (x86)\Common Files
CommonProgramFilesX86 : C:\Program Files (x86)\Common Files
CommonTemplates : C:\ProgramData\Microsoft\Windows\Templates
CommonDocuments : C:\Users\Public\Documents
CommonAdminTools : C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Administrative Tools
AdminTools : C:\Users\amodo\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Administrative Tools
CommonMusic : C:\Users\Public\Music
CommonPictures : C:\Users\Public\Pictures
CommonVideos : C:\Users\Public\Videos
Resources : C:\Windows\resources
LocalizedResources :
CommonOemLinks :
CDBurning : C:\Users\amodo\AppData\Local\Microsoft\Windows\Burn\Burn