Language/C#

C# 공부정리 - 데이터 2 (object, enum, nullable, var, const)

Tarel 2022. 12. 29. 17:10

객체 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을 대문자로 쓴걸 알 수 있는데 굳이 대문자로 쓸 필요는 없으나 상수는 대문자로 쓰는 것이

일종의 암묵적인 룰로 여겨진다고 한다.