C# 공부정리 - 데이터 2 (object, enum, nullable, var, const)
객체 object
어떤 데이터형이든 처리가 가능한 데이터로 클래스에 상속이 적용된다.
object a = 100;
object b = 3.1415926535897932384626433832f;
object c = 3.1415926535897932384626433832m;
object d = 'H';
object e = 'i';
object f = "World!!";
object g = false;
정수, float, decimal, 문자, 문자열, bool 등등 모든 데이터형 처리가 가능하다.
열거형 enum
enum DAY_OF_WEEK
{
SUN,
MON,
THE,
WED,
THU,
FRI,
SAT,
}
static void Main(string[] args)
{
Console.WriteLine("{0} {1}", DAY_OF_WEEK.SUN, (int)DAY_OF_WEEK.SUN);
Console.WriteLine("{0} {1}", DAY_OF_WEEK.MON, (int)DAY_OF_WEEK.MON);
Console.WriteLine("{0} {1}", DAY_OF_WEEK.THE, (int)DAY_OF_WEEK.THE);
Console.WriteLine("{0} {1}", DAY_OF_WEEK.WED, (int)DAY_OF_WEEK.WED);
Console.WriteLine("{0} {1}", DAY_OF_WEEK.THU, (int)DAY_OF_WEEK.THU);
Console.WriteLine("{0} {1}", DAY_OF_WEEK.FRI, (int)DAY_OF_WEEK.FRI);
Console.WriteLine("{0} {1}", DAY_OF_WEEK.SAT, (int)DAY_OF_WEEK.SAT);
}
여러개를 선언하여 사용할 수 있다.
(int)DAY_OF_WEEK.SUN은 이게 몇 번에 해당하는지를 나타낸다.
기본적으로 enum을 선언하면, 가장먼저 선언된 것에 0이 부여된다.
enum CLICK_STATE
{
NONE,
CLICK = 100,
DOUBLE_CLICK = 200,
UP,
}
이 코드 처럼 값을 넣어 줄 수도 있다.
이 때, NONE은 0, UP에는 201이 자동으로 부여된다.
nullable
해석하면 null이 될 수 있다는 뜻인데, 변수를 선언할 때, 이 변수는 null이 될 수 있다는 것을 알려줄 수 있다.
사용법은 아래 코드를 참조
int? num = 100;
보시다시피 int 뒤에 ?가 붙었다.
이로써 num은 null이 될 수 있는 변수가 되었다.
nullable은 HasValue, Value를 사용할 수 있다.
bool? isFlag = null;
Console.WriteLine(isFlag);
Console.WriteLine(isFlag.Value);
Console.WriteLine(isFlag.HasValue);
여기서 isFlag.HasValue는 false가 나오고
isFlag나 isFlagValue를 출력했을 때는 아무것도 나오지 않는다.
var
암시적 형식의 지역변수로 그리 자주 사용되는 것은 아니다.
지역변수로 선언된 브레이스 내부에서만 사용할 수 있고 브래이스 내부의 다른 브래이스에서는 사용할 수 없다.
for~each문에서 자주사용하는데 이건 나중에 배워보자
var는 정수든 실수든 문자열이든 뭐든 사용할 수 있다.
즉 var의 기능은 변수의 자료형을 자동으로 저장하는 것이라고 할 수 있다.
//var globalVar = 100;
static void Main(string[] args)
{
var a = 100;
var b = 3.1415926535897932384626433832f;
var c = 3.1415926535897932384626433832m;
var d = 'H';
var e = 'i';
var f = "World!!";
var g = false;
}
위에 주석처리된 globalVar는 Main함수 안에서 사용할 수 없다.
그리고 Main함수를 보면 var로 온갖 데이터를 저장하는 것을 알 수 있다.
오브젝트랑 유사해보이지만 지역변수로만 쓸 수 있다는 차이가 있다.
상수 const
한번 선언 되면 수정이 불가능한 것으로 사용법은 아래와 같다.
const int NUM = 100;
보시다시피 선언자 앞에다가 const만 붙여주면 된다.
이러면 num은 100으로 고정되고 수정이 불가능하게 된다.
그리고 NUM을 대문자로 쓴걸 알 수 있는데 굳이 대문자로 쓸 필요는 없으나 상수는 대문자로 쓰는 것이
일종의 암묵적인 룰로 여겨진다고 한다.