본문 바로가기
C#/이론

[예제로 배우는 C# 프로그래밍] 데이터 타입

by 단월໒꒱ 2022. 6. 27.

 

C# 데이터 타입

 

  C#을 포함한 모든 .NET 프로그래밍 언어는 .NET의 Common Type System에 정의된 .NET 데이터 타입을 사용한다.

 

  C#은 int, double, string과 같은 C# 키워드로 데이터 타입을 표현할 수 있으며, System.Int32, System.Double, System.String과 같은 .NET 데이터 클래스로 데이터 타입을 표현할 수도 있다.

 

  내부적으로는 C# 컴파일러는 C# 키워드로 된 데이터 타입을 컴파일한 후 .NET 데이터 타입으로 변경한다.

 

 

 

 

 

리터럴 데이터

 

  C#에서 123, true, "ABC"와 같이 값을 직접 써줄 수 있는데, 이를 리터럴(Literal)이라고 한다.

 

  리터럴 데이터를 사용할 때, 별도의 접미어 표시(Suffix)가 없는 경우 C# 컴파일러는 int, double, char, string, bool 타입에 기본적으로 그 값을 할당한다.

  따라서 특정 데이터 타입을 지정하고 싶으면 리터럴 데이터 뒤에 1~2자 타입 지정 접미어를 추가해야 한다.

 

  접미어는 대소문자 구분이 없기 때문에 decimal의 경우 M이나 m 중 아무거나 사용하면 된다.

 

 

// 기본 리터럴 타입

123    // int 리터럴
12.3   // double 리터럴
"A"    // string 리터럴
'a'    // char 리터럴
true   // bool 리터럴

 

 

 

 

 

데이터 타입 예제

 

// Bool
bool b = true;

// Numeric
short sh = -32768;   
int i = 2147483647;  
long l = 1234L;      // L suffix
float f = 123.45F;   // F suffix
double d1 = 123.45; 
double d2 = 123.45D; // D suffix
decimal d = 123.45M; // M suffix

// Char/String
char c = 'A';
string s = "Hello";

// DateTime  2011-10-30 12:35
DateTime dt = new DateTime(2011, 10, 30, 12, 35, 0);

 

 

  - float : 숫자 뒤에 F를 붙여 double이 아닌 float 타입임을 나타낸다.

  - double : 숫자 뒤에 D를 붙이거나 아무것도 붙이지 않음으로써 double 타입임을 나타낸다.

  - decimal : 숫자 뒤에 M을 붙여 decimal 타입임을 나타낸다.

  - char : 작은 따옴표(')를 사용한다.

  - string : 큰 따옴표(")를 사용한다.

 

 

 

최댓값 / 최솟값

 

  숫자형 데이터 타입의 최댓값이나 최솟값을 알아내기 위해서 .NET 데이터 타입 클래스들의 MaxValue, MinValue 프로퍼티를 사용한다.

 

  C# 데이터 타입 키워드 뒤에서도 이런 프로퍼티를 직접 호출할 수 있다. ex. int.MaxValue, Int32.MaxValue....

 

 

int i = int.MaxValue;
float f = float.MinValue;

 

 

 

NULL

 

  NULL은 어떤 변수가 메모리 상에 어떤 데이터도 갖고 있지 않다는 의미로 사용한다. NULL을 표현하기 위해 C#에서는 null 이라는 키워드를 사용한다.

 

  모든 데이터 타입이 NULL을 가질 수 있는 것은 아니다. 이 때문에 데이터 타입은 Reference 타입(NULL을 가질 수 있는 타입)과 Value 타입(NULL을 가질 수 없는 타입)으로 구분할 수 있다.

 

 

// string 타입 변수 s에 null을 할당

string s;
s = null;

 

 

 

Nullable Type

 

  정수(int)와 날짜(DateTime)와 같은 Value 타입은 보통 NULL을 가질 수 없는데, C# 2.0에서부터 이런 타입들이 NULL을 가질 수 있게 했다. 이를 Nullable Type이라고 한다.

 

  C#에서 물음표를 정수나 날짜 타입명 뒤에 붙이면 Nullable Type이 된다.  ex. int?, DateTime?

  이는 컴파일하면 .NET의 Nullable<T> 타입으로 변환된다. Nullable Type을 일반 Value 타입으로 변경하려면 Nullable의 .Value 속성을 사용해야 한다.

 

 

// Nullable 타입
int? i = null;
i = 101;
            
bool? b = null;

//int? 를 int로 할당
Nullable<int> j = null;
j = 10;
int k = j.Value;

 

 

 

댓글