열거형(enum), 구조체(struct)
개요
열거형이란
- 열거형(enum)은 정수에게 별명을 붙혀 주는 것입니다.
- 쉽게 말하여, 친구 A는 이름과 친구들 끼리 불리우는 별명이 있듯, 열거형을 이용해 내 코드 내에서 정수를 부를 별명을 지정하겠다. 라는 것입니다.
enum Food
{
Hamburger, Pizza, Chicken
}
void main()
{
Console.WriteLine(Food.Hamburger);
Console.WriteLine((int)Food.Hamburger);
Console.WriteLine(Food.Pizza);
Console.WriteLine((int)Food.Pizza);
Console.WriteLine(Food.Chicken);
Console.WriteLine((int)Food.Chicken);
}
Hamburger
0
Pizza
1
Chicken
2
- 위와 같이 출력은 Hamburger나 Pizza로 되지만, 형변환을 통해 실체를 보면 0부터 시작하여, 1씩 증가하는 정수가 나오는 것을 알 수 있다.
- 그렇다면 저 숫자를 바꿀 수 있을까?, 어디에 사용될까?
enum Food
{
Hamburger=4, Pizza=-3, Chicken = 9999
}
void main()
{
Console.WriteLine("치킨 주문이요!");
INeedFood(Food.Chicken)
}
void INeedFood(Food fd)
{
switch(fd)
{
case Food.Hamburger:
Console.WriteLine($"여기 음식번호 {(int)fd}번 햄버거 나왔습니다."););
break;
case Food.Pizza:
Console.WriteLine($"여기 음식번호 {(int)fd}번 피자 나왔습니다."););
break;
case Food.Chicken:
Console.WriteLine($"여기 음식번호 {(int)fd}번 치킨 나왔습니다.");
break;
}
}
치킨 주문이요!
여기 음식번호 9999번 치킨 나왔습니다.
- 위와 같이 switch문 등을 사용할때 가독성이 올라가, 후에 코드가 길어지게 되었을 때 해당 코드의 쓰임세를 바로 알 수 있게 됩니다.
구조체란
- 구조체(struct)란 프로그래머가 직접 정의할 수 있는 자료형을 말합니다.
- 예를 들어 학원에서 사람들을 받을 때 자료를 저장하는 것을 일일이 손으로 직접 기입하는 것은 힘들기 때문에 이 때 사용 가능한게 구조체입니다.
void Main()
{
Academy[] academy = new Academy[3];
academy[0] = new aaa("홍길동",30,1);
academy[1] = new aaa("둘리", 5, 4);
academy[2] = new aaa("또치", 6, 3);
for (int i = 0; i < a.Length; i++)
{
academy[i].PrintInfo();
}
academy[1].sClass = 3;
academy[1].PrintInfo();
}
struct Academy
{
string name;
private int age;
public int class;
Academy(string _name, int _age, int _class)
{
name = _name;
age = _age;
class = _class
}
public void PrintInfo()
{
Console.WriteLine($"-----\n이름 : {name}\n나이 : {age}\n학급 : {sClass}");
}
}
-----
이름 : 홍길동
나이 : 30
학급 : 1
-----
이름 : 둘리
나이 : 5
학급 : 4
-----
이름 : 또치
나이 : 6
학급 : 3
-----
이름 : 둘리
나이 : 5
학급 : 3
private과 public은 접근 한정자로, 외부에서 접근하는 것을 제한할 수 있습니다.
protect 와 internal도 있습니다.
- 구조체 내부의 모든 선언(함수, 변수)은 private로 지정되어 있기 때문에, 외부와 상호작용이 필요한 함수의 경우에는 반드시 public을 붙여야합니다.