Programming/C#

[#2] 데이터 C#

SNOWOO 2021. 5. 25. 22:32
728x90

C#은 다양한 종류의 데이터 형식을 제공한다.

"이것이 C#이다" 에서는 [ 기본 데이터 형식, 상수, 열거형]에 대해서 다룬다.

 

변수 : "데이터를 담는 일정 크기의 공간"

표현방식으로는 변수를 선언한다 라고 합니다.

 

int x;// int : 데이터 형식 , x : 식별자(변수의 이름)

 

값 형식 / 참조 형식

값, 참조 형식을 구분하는 것은 코딩할때 정말 중요하다고 생각한다.

값 형식은 변수가 값을 담는 데이터 형식을 말하고, 참조 형식은 변수가 값 대신 값이 있는 곳의 위치를 담는 데이터 형식이다.

 

스택 & 값 형식

탑 처럼 아래부터 차곡차곡 쌓는 방식이 stack이라고 하는데 값 형식 데이터는 이런 stack memory에 적재된다.

 

힙 & 참조 형식

- CLR의 가비지 컬렉터가 알아서 쓰레기 처리해준다

- 코드 블록이 끝나는 시점과 상관없이 데이터를 유지하고 싶을때 사용

 

1. 숫자 데이터 형식

  정수 계열 형식

    byte, sbyte, short, ushort, int, uint, long, uling, char

2. 부동 소수점 형식

  float, double, decimal

3. 문자 형식과 문자열 형식

  string -> "" char -> ''

4. 논리 형식

  bool : 1bit로 표현 가능하지만, 컴퓨터 기본적으로 다루는 데이터의 크기가 바이트 단위이기 때문에 1비트만 저장하려 해도 1byte가 사용된다.

5. object 형식

  모든 데이터 형식의 조상, 모든 데이터 형식 object 형식으로부터 상속받는다.

6. 박식과 언박싱

  object o = 20; // 박싱 -> object 형식에 값 형식 데이터를 할당하려고 하면 object 형식은 박싱을 수행해서 해당

                                   데이터를 힙에 할당한다.

  int b = (int)o // 언박싱-> 박싱 된 값을 꺼내 값 형식 변수에 저장 하는 과정

 

상수와 열거 형식

상수 : const 키워드 사용, 선언 후에 데이터를 변경할 수 없다.

열거 형식 : enum 키워드 사용

enum 열거 형식명 : 기반자료형{상수1, 상수2, 상수3, ...}

enum TodayMenu { 햄버거, 피자, 짜장면, 떡볶이 } // 기본 int 기반자료형으로 사용

기반자료형은 위에 정수 계열 형식 사용 가능.

TodayMenu menu = TodayMenu.피자; 

enum TodayMenu { 햄버거 = 5000, 피자 = 18000, 짜장면=8000, 떡볶이=3500 };

이렇게 직접 지정해서 사용할 수 있다.

그럼 음.. 예를 들면

Console.WriteLine($"오늘의 메뉴 :{TodayMenu.햄버거.ToString()}는 {(int)TodayMenu.햄버거}원 입니다.");

이런 식으로 유용? 하게 사용할 수 있다.

 

Nullable 형식

코딩을 하다 보면 어떤 값도 가지지 않는 변수가 필요할 때가 있다.

이런 경우, 변수에게 할당된 메모리 공간을 비워둘 수 있도록 Nullable 형식을 사용한다.

데이터형식? 변수이름;

int? a = null;

float? b = null;

Nullable 형식은 HasValue와 Value 두 가지 속성을 갖고 있다.

 

형식이 너무 많아!!! var

컴파일러가 알아서 할당해주지만 항상 초기화해줘야 한다! 지역 변수로만 사용 가능하다!

(근데 C#은 전역 변수가 없다고 한다.) 그럼 초기화만 잘해주면 되겠지?

 

공용 데이터 형식

다른 언어와 같이 사용 가능하다고 한다.

코딩하다 보면 Byte, Int32, Int64 이런 걸 볼 수 있다. 

System.Byte, System.Int32, System.Int64 는 C#에서는 byte, int, long

C++에서는 char, int 혹은 long, __int64 이렇게 쓰인다

 

그럼 C#에서 쓰이는 char은 C++에서는 wchar_t 이렇게 쓰인다고 한다. 신기하네... 역시 C++ 보다는 C#이 편하다.

공용 데이터 형식을 확인하려면 변수.GetType()을 이용하여 호출 가능하다.

 

문자열 다루기

문자열은 정말 많이 쓰인다. 나 같은 경우에는 화면을 구성할 때 문자열을 나누고, 합치고, 부분 자르고, 뒤에다 붙이고 등등 많이 써서 어느 정도는 외우고 있지만 한번 표로 정리해서 책상에다 붙여두고 써야겠다.

LIST