[C#] 데이터 타입

Kim Yuhyeon·2022년 3월 23일
0

게임개발

목록 보기
2/135
C# 데이터 타입.NET 데이터 타입설명
boolSystem.BooleanTrue or False
byteSystem.Byte8비트 unsigned integer
sbyteSystem.SByte8비트 signed integer
shortSystem.Int1616비트 signed integer
intSystem.Int3232비트 signed integer
longSystem.Int6464비트 signed integer
ushortSystem.UInt1616비트 unsigned integer
uintSystem.UInt3232비트 unsigned integer
ulongSystem.UInt6464비트 unsigned integer
floatSystem.Single32비트 single precision 부동소수점 숫자
doubleSystem.Double64비트 single precision 부동소수점 숫자
decimalSystem.Decimal128비트 Decimal
charSystem.Char16비트 유니코드 문자
stringSystem.String유니코드 문자열
System.DateTime날짜와 시간, 별도의 C# 키워드가 없음
objectSystem.Object모든 타입의 기본 클래스로 모든 유형을 포함할 수 있음

리터럴 데이터

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

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

  • 특정 데이타 타입을 지정하고 싶으면, 리터럴 데이타 뒤에 1~2자의 타입 지정 접미어(Suffix)를 추가해야 한다. Suffix는 대소문자 구분이 없다.

    ex) decimal을 나타내는 접미어 M은 1024M 이나 1024m처럼 사용가능하다.

예제

디폴트 리터럴 타입

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

데이타 타입별 Suffix

C# 리터럴 데이타 타입Suffix (대소문자 모두 가능)예시
longL1024L
uintU1024U
ulongUL1024UL
floatF10.24F
doubleD10.24D 또는 10.24
decimalM10.24M

코드

// 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 : 123.45F와 같이 숫자 뒤에 F를 붙여 double이 아닌 float 타입임을 나타낸다.
  • double : 123.45D과 같이 숫자 뒤에 D를 붙이거나 혹은 아무것도 붙이지 않음으로 해서 double 타입임을 나타낸다.
  • decimal : 123.45M과 같이 숫자 뒤에 M를 붙여 decimal 타입임을 나타낸다.
  • char : 작은따옴표 '(single quotation)을 사용하여 한 문자를 할당한다.
  • string : 큰따옴표 "(double quotation)을 사용하여 문자열을 할당한다.

최대값, 최소값

숫자형 데이터 타입의 최대값 혹은 최소값을 알아내기 위해서는 .NET 데이타 타입 클래스들의 MaxValue, MinValue 프로퍼티를 사용한다.
C# 데이타 타입 키워드 뒤에서도 이러한 프로퍼티를 직접 호출할 수 있다.
ex. int.MaxValue 혹은 Int32.MaxValue 처럼 사용할 수 있다.

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

NULL

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

모든 데이터 타입이 NULL을 가질 수 있는 것은 아니며, 데이터타입은 이에 따라 구분될 수 있다.

1. NULL을 가질 수 있는 타입 (Reference 타입)

string s;
s = null

NULL을 가질 수 있는 타입인 경우, 변수에 null을 할당하려면 위와 같이 한다.

2. NULL을 가질 수 없는 타입 (Value 타입)

정수(int)나 날짜(DateTime)와 같은 Value Type은 일반적으로 NULL을 가질 수 없다.

C# 2.0에서부터 이러한 타입들에 NULL을 가질 수 있게 하였는데, 이를 Nullable Type 이라 부른다.

C#에서 물음표(?)를 int나 DateTime 타입명 뒤에 붙이면 즉, int? 혹은 DateTime? 같이 하면 Nullable Type이 된다.
이는 컴파일하면 .NET의 Nullable 타입으로 변환된다. Nullable Type (예: int?) 을 일반 Value Type (예: int)으로 변경하기 위해서는 Nullable의 .Value 속성을 사용한다.

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

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

데이타베이스에 NULL이 허용된 INT 컬럼이 있을 때 C#에서 int? 로 매핑할 수 있다.

💡 참고 포스팅

[예제로 배우는 C# 프로그래밍]기초문법 - C# 데이타 타입

0개의 댓글