C# 데이터 타입 | .NET 데이터 타입 | 설명 |
---|---|---|
bool | System.Boolean | True or False |
byte | System.Byte | 8비트 unsigned integer |
sbyte | System.SByte | 8비트 signed integer |
short | System.Int16 | 16비트 signed integer |
int | System.Int32 | 32비트 signed integer |
long | System.Int64 | 64비트 signed integer |
ushort | System.UInt16 | 16비트 unsigned integer |
uint | System.UInt32 | 32비트 unsigned integer |
ulong | System.UInt64 | 64비트 unsigned integer |
float | System.Single | 32비트 single precision 부동소수점 숫자 |
double | System.Double | 64비트 single precision 부동소수점 숫자 |
decimal | System.Decimal | 128비트 Decimal |
char | System.Char | 16비트 유니코드 문자 |
string | System.String | 유니코드 문자열 |
System.DateTime | 날짜와 시간, 별도의 C# 키워드가 없음 | |
object | System.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 리터럴
C# 리터럴 데이타 타입 | Suffix (대소문자 모두 가능) | 예시 |
---|---|---|
long | L | 1024L |
uint | U | 1024U |
ulong | UL | 1024UL |
float | F | 10.24F |
double | D | 10.24D 또는 10.24 |
decimal | M | 10.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을 표현하기 위하여 C# 에서는 소문자 null
이라는 키워드를 사용한다.
모든 데이터 타입이 NULL을 가질 수 있는 것은 아니며, 데이터타입은 이에 따라 구분될 수 있다.
string s;
s = null
NULL을 가질 수 있는 타입인 경우, 변수에 null을 할당하려면 위와 같이 한다.
정수(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? 로 매핑할 수 있다.