C# 강좌 : 제 9강 - 데이터 형식

C# Data Type

C# 강좌 : 제 9강 - 데이터 형식
[ C# ] - 윤대희

데이터 형식


데이터 형식에는 기본 데이터 형식(Primitive Data Type)과 복합 데이터 형식(Complex Data Type)이 있습니다.

이 데이터 형식은 값 형식(Value Types)참조 형식(Reference Types)으로 나뉩니다.

즉, 기본 데이터 형식에 값 형식과 참조 형식이 되며 복합 데이터 형식에도 값 형식과 참조 형식이 되는 부분이 있습니다.



변수(Variable)


변수란 데이터를 저장하는 공간입니다. 저장하는 공간의 크기는 데이터 형식에 따라 결정됩니다.

변수는 다음과 같이 선언합니다.


int x = 100;
  • int : 데이터 형식
  • x : 식별자 (변수)
  • = : 대입 연산자
  • 100 : 데이터
  • ; : 세미콜론

데이터 형식, 식별자, 연산자, 데이터, 세미콜론 5가지의 구성요소로 변수를 할당 할 수 있습니다. 또한 다음과 같이 선언할 수도 있습니다.


int x;
x = 100;

첫 번째 방법은 선언 및 초기화를 한 번에 한 방법이며, 두 번째 방법은 선언과 데이터 할당을 별도로 한 방법입니다.


int x, y, z;
int a = 100, b = 200, c = 300;

위와 같이 여러 개의 변수를 동시에 선언할 수 있습니다. 단, 동시에 선언하는 변수들은 데이터 형식이 같아야 하며 각각 콤마(,)를 이용하여 구분해야합니다.



초기화(Initialization)


초기화(Initialization)이란 변수가 선언된 최초에 데이터를 할당하는 것을 의미합니다.

int = x; 이후 x의 값에 아무 데이터도 입력하지 않으면 x 변수에는 쓰레기 값이 들어가게 됩니다.

C#에서는 할당되지 않은 변수가 사용될 경우 오류 (CS0165)가 발생하여 문제발생을 억제합니다.



기본 데이터 형식(Primitive Data Type)


기본 데이터 형식(Primitive Data Type)은 숫자 형식, 문자열 형식, 논리 형식, 오브젝트 형식으로 나누어집니다.

숫자 형식과 논리 형식은 값 형식(Value Types)에 해당하며, 문자열 형식과 오브젝트 형식은 참조 형식(Reference Types)에 해당합니다.



데이터 형식 NET 클래스 형식 비트 범위
byte Byte 부호 없는 정수 8 0 ~ 255
sbyte SByte 부호 있는 정수 8 -128 ~ 127
short Int16 부호 있는 정수 16 -32,768 ~ 32,767
ushort UInt16 부호 없는 정수 16 0 ~ 65,535
int Int32 부호 있는 정수 32 -2,147,483,648 ~ 2,147,483,647
uint UInt32 부호 없는 정수 32 0 ~ 4,294,967,295
long Int64 부호 있는 정수 64 -922,337,203,685,477,508 ~ 922,337,203,685,477,507
ulong UInt64 부호 없는 정수 64 0 ~ 18,446,744,073,709,551,615
float Single 단정밀도 부동 소수점 형식 32 -3.402823e38 ~ 3.402823e38
double Double 배정밀도 부동 소수점 형식 64 -1.79769313486232e308 ~ 1.79769313486232e308
decimal Decimal 29자리 데이터를 표현하는 소수 형식 128 -3.402823e38 ~ 3.402823e38
char Char 단일 유니코드 문자 16 유니코드 기호
string String 문자 시퀀스 - -
bool Boolean 논리 형식 8 true 또는 false
object Object 모든 형식의 기본 형식 - -



값 형식(Primitive Data Type)과 참조 형식(Reference Types)


값 형식은 변수가 값을 담는 데이터 형식입니다. 스택(Stack)에 할당되고 변수 생성 코드 범위를 벗어나면 해제됩니다.

참조 형식은 변수가 값 대신에 값이 있는 곳의 위치를 담는 데이터 형식입니다. 힙(Heap)에 할당되고 가비지 컬렉터에 의해 해제됩니다.

즉, 데이터를 스택(Stack)에 저장하느냐, 힙(Heap)에 저장하느냐의 차이를 보입니다.

메소드를 통해 생성된 변수는 스택(Stack)에 저장되며 new 한정자를 이용한 변수는 힙(Heap)에 저장됩니다.



상수(Constants) & 열거 형식(Enumerator)


상수(Constants)는 변하지 않는 값을 의미합니다.

데이터 형식 앞에 const 를 입력합니다. const 를 입력한 데이터는 변경할 수 없습니다.


const int x = 100;
const string name = "daehee";

열거 형식(Enumerator)은 여러 개의 상수를 선언할 때 한번에 묶어서 선언해주는 방법입니다. const 를 사용하지 않고 enum 을 이용합니다.


enum x : int {, , two, _3}
label1.Text = Convert.ToString(x. + 1);

위와 같이 선언하며 불러올 수 있습니다. ‘enum 열거 형식 : 데이터 형식 { 상수1, 상수2, 상수3, … }’ 형태입니다.

label1에 출력되는 값은 two가 됩니다. 데이터 형식 안에 들어가는 요소에는 0 부터 시작합니다.

만약, x.일 + 1이 아니라 x.일 - 2일 경우에는 -1이 출력되게 됩니다. x.일의 요소 값은 1이며 1-2 = -1 이므로, -1이 출력됩니다.



Nullable 형식


Nullable 형식은 값 형식에서만 사용되며, 해당 변수를 비우는 의미입니다.

프로그램 실행 시 null 값일 경우 에러가 발생하게되므로 비어있는 값일 경우 return하는 용도로 많이 사용됩니다.



Book Image

개정판이 출간됐습니다!

C#과 파이썬을 활용한 OpenCV 4 프로그래밍 (개정판)

컴퓨터 비전 기초 이론부터 머신러닝을 활용한 영상 처리 프로젝트까지

  • C#과 파이썬용 OpenCV의 데이터 형식과 행렬 및 배열 연산
  • 이미지/동영상/카메라를 활용한 입출력과 결과 저장
  • 전처리 과정과 정보를 탐색하기 위한 이미지 변형
  • 유의미한 정보를 검출하기 위한 이미지 변환
  • 이미지에서 정보를 검출 및 인식
  • 객체 검출을 포함한 모션 추적
  • K-means, KNN, SVM 등의 머신러닝 알고리즘 적용 방법
  • 카페(Caffe), 다크넷(Darknet), 텐서플로 모델을 활용한 딥러닝 모듈 적용 방법
  • Tesseract-OCR과 C# OpenCvSharp4를 활용한 프로젝트
  • 텐서플로와 Python OpenCV4를 활용한 프로젝트
  • 윤대희 저 | 위키북스

    [yes24 바로가기] [알라딘 바로가기] [교보문고 바로가기]

    후원하기


    ⤧  Previous post C# 강좌 : 제 8강 - Timer ⤧  Next post C# 강좌 : 제 10강 - 분기문
    C# Category