일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
- db
- 다중기본키
- PHP
- oracle
- springboot
- 다중pk
- mssql
- javascript
- 쿼리
- VMWare
- 데이터베이스
- memoryDB
- HTML
- CrossSiteScripting
- 가상머신
- windows7
- SQL
- 자동증가열
- mysql
- ascx.cs
- ASP
- 오라클
- 이미지엑박
- 코딩테스트
- 스프링부트
- C#
- 프로그래머스
- 람다식함수
- 트리플DES
- 자바스크립트
- Today
- Total
개발바닥 아방수
[class] C# - enums (이넘) - 상수 열거형 클래스 본문
목차
enum 정의
enum과 class와의 유사점/차이점
enum values (값)
enum 예제1 - Class 안의 enum
enum 예제2 - Switch 구문 안의 enum
enum 예제3 - enum 이용한 반복문
enum 정의
상수를 콤마( , )로 모아놓은 열거형 "클래스".
※ 변경 불가한 읽기 전용 깂 (예: 날짜, 색깔 등) 모아 관리 시 유용.
※ 특히, int, bytes 등 정수형 상수 정의 시 유용.
[특징]
1. enum : enumerations (= 구체적으로 나열) 의미.
2. const 키워드로 정의하는 상수처럼 변경 불가.
3. Class와 유사점・차이점 있음. (아래에서 설명.)
4. 각 상수에 대해서 개별 속성값 지정도 가능.
5. 다른 Class 안에서 사용 가능. (예제1)
6. Switch 구문 안에서도 사용 가능. (예제2)
6. 반복문에서도 사용 가능. (예제3)
[예제] Program.cs
using System;
namespace Homzzang
{
enum Code
{
HTML,
CSS,
JS
}
class Program
{
static void Main(string[] args)
{
Code myCode = Code.CSS;
Console.WriteLine(myCode);
}
}
}
결과값: CSS
enum과 class와의 유사점/차이점
[Class와 유사점]
(속성・메서드・생성자) 보유 가능.
[Class와 차이점]
1.
enum 상수들은 public, static, const 성격 띔.
즉, 변경 불가. = 덮어쓰기 불가. = 재정의 불가.
2.
enum은 객체 생성 불가.
enum values (값)
1.
enum 안 각 요소는 0부터 정수 색인 배정.
2.
enum 안 요소에서 정수 얻으려면,
명시적으로 int 자료형으로 변환해야 함. (예제1)
3.
enum 안 특정 요소에 사용자 정의 정수 배정 가능하며,
그에 따라 그 이후 요소 색인은 자동 업그레이드 됨. (예제2)
[예제1]
using System;
namespace Homzzang
{
class Program
{
enum Months
{
Jan, // 0
Feb, // 1
Mar, // 2
Apr, // 3
May, // 4
Jun, // 5
Jul // 6
}
static void Main(string[] args)
{
int num = (int) Months.Feb;
Console.WriteLine(num);
}
}
}
[예제2] 사용자 정의 정수 배정 가능하며, 그 이후는 자동 증가.
using System;
namespace Homzzang
{
class Program
{
enum Months
{
Jan, // 0
Feb=2, // 2
Mar, // 3
Apr, // 4
May, // 5
Jun, // 6
Jul // 7
}
static void Main(string[] args)
{
int num = (int) Months.May;
Console.WriteLine(num);
}
}
}
결과값: 5
enum 예제1 - Class 안의 enum
enum은 다른 클래스 안에서도 사용 가능.
[예제] Program.cs
using System;
namespace Homzzang
{
class Program
{
enum Code
{
HTML,
CSS,
JS
}
static void Main(string[] args)
{
Code myCode = Code.CSS;
Console.WriteLine(myCode);
}
}
}
결과값: CSS
enum 예제2 - Switch 구문 안의 enum
enum은 switch 구문 안에서도 사용 가능.
※ 상응하는 값을 찾기 위해 자주 사용됨.
[예제] Program.css
using System;
namespace Homzzang
{
class Program
{
enum Code
{
HTML,
CSS,
JS
}
static void Main(string[] args)
{
Code myCode = Code.CSS;
switch(myCode)
{
case Code.HTML:
Console.WriteLine("HTML : 뼈대");
break;
case Code.CSS:
Console.WriteLine("CSS : 디자인");
break;
case Code.JS:
Console.WriteLine("JS : 기능");
break;
}
}
}
}
결과값:
CSS : 디자인
enum 예제3 - enum 이용한 반복문
foreach (... in ...) 반복문 이용해 접근 가능.
Enum.GetValues() 메서드는 enum 안 각 상수에 접근.
※ 반복문 돌릴 때 아주 유용.
[구문]
foreach (enum var in Enum.GetValues(typeof(enum)))
var 출력.
}
PS.
※ enum : enum명.
※ var : 변수명. (※ enum 안의 각 상수를 담는 변수)
[예제] Program.cs
using System;
namespace Homzzang
{
class Program
{
enum Code
{
HTML,
CSS,
JS
}
static void Main(string[] args)
{
foreach (Code i in Enum.GetValues(typeof(Code)))
{
Console.WriteLine(i);
}
}
}
}
결과값:
HTML
CSS
JS
(참고출처) https://homzzang.com/b/cs-36
'웹 개발 > C#' 카테고리의 다른 글
JSON 데이터 직렬화 및 역직렬화하기 (Json.NET vs JavaScriptSerializer) (0) | 2023.01.03 |
---|---|
언제 Response.Redirect(url, true)를 쓸까? (0) | 2022.12.16 |
.aspx 파일과 .ascx 파일의 차이 (0) | 2022.11.24 |