본 문서에서는 자주 참고할 수 있는 C# 언어에 대한 사양(specification) 중 데이터 형식 및 연산자 내용을 정리합니다.
C# 데이터 형식 C# Data Types
| [표 #1] C# 데이터 형식 (C# Data Types) |
| 분 류 |
종 류 |
키워드/예약어 |
특 성 |
값 형식
Value Type |
구조체형
Structs |
숫자형
Numeric |
sbyte |
부호있는 8비트 숫자
-128 ~ 127 |
| byte |
부호없는 8비트 숫자
0 ~ 255 |
| short |
부호있는 16비트 숫자
-32,768 ~ 32,767 |
| ushort |
부호없는 16비트 숫자
0 ~ 65,535 |
| int |
부호있는 32비트 숫자
-2,147,483,648 ~ 2,147,483,647 |
| uint |
부호없는 32비트 숫자
0 ~ 4,294,967,295 |
| long |
부호있는 64비트 숫자
-9,223,372,036,854,775,808
~
9,223,372,036,854,775,807 |
| ulong |
부호없는 64비트 숫자
0
~
18,446,744,073,709,551,615 |
| char |
16비트 유니코드 문자
U+0000 ~ U+ffff |
| float |
32비트 부동 소수점 숫자
1.5x10-45 ~ 3.4x1038 |
| double |
64비트 부동 소수점 숫자
5.0x10-324 ~ 1.7x10308 |
| decimal |
96비트 부호있는 숫자
100 ~ 1028 |
불런형
Boolean |
bool |
논리
참 (true) / 거짓 (false) |
사용자
정의형
User Defined Structs |
struct |
사용자 정의 구조체 |
열거형
Enumerations |
enum |
열거형 |
참조 형식
Reference Type |
클래스
Class |
class |
클래스 개체
(System.Object에서
파생됨)
포함할 수 있는 멤버 형식
- Constructor (생성자)
- Destructor (소멸자)
- Constant (상수)
- Field (필드)
- Method (메서드)
- Property
(속성; 프로퍼티)
- Indexer (인덱서)
- Operator (연산자)
- Event (이벤트)
- Delegate (델리게이트)
- Class (클래스)
- Interface (인터페이스)
- Struct (구조체) |
인터페이스
Interface |
interface |
인터페이스
(System.Object에서 파생되지 않음)
메서드, 델리게이트, 이벤트 등에 대한 규약을 명시함. 구현은 하지 않음. |
델리게이트
Delegate |
delegate |
델리게이트
다른 메서드에 대한 메서드 이름을 임의로 명명하여 사용하거나 가리키도록 할 때 사용. |
개체
Object |
object
Object |
개체
인터페이스(interface)를 제외한 모든 형식의 기본형 |
문자열
String |
string
String |
문자열
유니코드 문자 집합.
문자열 값을 표현하고 다루는데 사용. |
| (참고 : MSDN) |
C# 문자열 숫자형식 포맷팅 C# Numberic Formatting
숫자형식 포맷팅을 이용하면 숫자로 이루어진 문자열을 다양한 형태로 출력할 수 있습니다.
기본적으로 이 포맷팅은 System.String.Format 메서드에 기반하여 적용됩니다.
| [표 #2] C# 숫자 형식 문자열 |
| 형식지정자 |
종 류 |
예제 코드 |
출력 결과 |
| C / c |
통화
Currency |
Console.WriteLine("{0:C}", 2.5); Console.WriteLine("{0:C}", -2.5); |
$2.50
($2.50) |
| D / d |
10진법
Decimal |
Console.WriteLine("{0:D5}", 25); |
00025 |
| E / e |
과학적 지수
Scientific |
Console.WriteLine("{0:E}", 250000); |
2.500000E+005 |
| F / x |
고정 소수점
Fixed-point |
Console.WriteLine("{0:F2}", 25); Console.WriteLine("{0:F0}", 25); |
25.00
25 |
| G / g |
일반
General |
Console.WriteLine("{0:G}", 2.5); |
2.5 |
| N / n |
숫자
Number |
Console.WriteLine("{0:N}", 2500000); |
2,500,000.00 |
| P / p |
백분율
Percentage |
Console.WriteLine("{0:P}", .2468013); Console.WriteLine("{0:P1}", .2468013); |
24.68 %
24.7 % |
| X / x |
16진법
Hexadecimal |
Console.WriteLine("{0:X}", 250); Console.WriteLine("{0:X}", 0xffff); |
FA
FFFF |
| (참고 : MSDN) |
C# 문자열 날짜형식 포맷팅 C# Date and Time Formatting
날짜형식 포맷팅을 이용하면 날짜나 시간을 의미하는 문자열을 다양한 형태로 출력할 수 있습니다.
기본적으로 이 포맷팅은 System.String.Format 메서드에 기반하여 적용됩니다.
| [표 #3] C# 표준 날짜 및 시간 형식 문자열 |
| 형식지정자 |
종 류 |
예제 코드 |
출력 결과 |
| d |
간단한 날짜 패턴 |
DateTime dt = new DateTime(2008, 12, 6);
Console.WriteLine("{0:d}", dt); |
2008-12-06 |
| D |
자세한 날짜 패턴 |
Console.WriteLine("{0:D}", dt); |
2008년 12월 6일 토요일 |
| f |
전체 날짜/시간 패턴
(간단한 시간) |
DateTime dt = new DateTime(2008, 12, 6, 16, 3, 52); Console.WriteLine("{0:f}", dt); |
2008년 12월 6일 토요일 오후 4:03 |
| F |
전체 날짜/시간 패턴
(자세한 시간) |
Console.WriteLine("{0:F}", dt); |
2008년 12월 6일 토요일 오후 4:03:52 |
| g |
일반 날짜/시간 패턴
(간단한 시간) |
DateTime dt = new DateTime(2008, 12, 6, 16, 3, 52);
Console.WriteLine("{0:g}", dt); |
2008-12-06 오후 4:03 |
| G |
일반 날짜/시간 패턴
(자세한 시간) |
Console.WriteLine("{0:G}", dt); |
2008-12-06 오후 4:03:52 |
| M / m |
월 일 패턴 |
DateTime dt = new DateTime(2008, 12, 6, 16, 3, 52);
Console.WriteLine("{0:M}", dt); |
12월 6일 |
| t |
간단한 시간 패턴 |
DateTime dt = new DateTime(2008, 12, 6, 16, 3, 52);
Console.WriteLine("{0:t}", dt); |
오후 4:03 |
| T |
자세한 시간 패턴 |
Console.WriteLine("{0:T}", dt); |
오후 4:03:52 |
| u |
정렬 가능한 유니버설 날짜/시간 패턴 |
DateTime dt = new DateTime(2008, 12, 6, 16, 3, 52);
Console.WriteLine("{0:u}", dt); |
2008-12-06 16:03:52Z |
| U |
유니버설 전체 날짜/시간 패턴
(국제표준시각) |
Console.WriteLine("{0:U}", dt); |
2008년 12월 6일 토요일 오전 7:03:52 |
| Y / y |
년 월 패턴 |
DateTime dt = new DateTime(2008, 12, 6, 16, 3, 52);
Console.WriteLine("{0:Y}", dt); |
2008년 12월 |
모든 예시된 출력 결과는 시스템 로케일이 '한국/한국어 ko-kr'로 설정된 경우로 가정합니다.
모든 예시된 출력 결과는 시스템 로케일 설정에 따라 다르게 출력될 수 있습니다.
(참고 : MSDN) |
C# 문자열 이스케이프 시퀀스 String Escape Sequences
| [표 #4] C# 문자열 이스케이프 시퀀스 |
이스케이프
시퀀스 |
문자 이름 |
유니코드
인코딩 |
| \' |
작은 따옴표 |
0x0027 |
| \" |
큰 따옴표 |
0x0022 |
| \\ |
백슬래시 |
0x005C |
| \0 |
Null |
0x0000 |
| \a |
경고 |
0x0007 |
| \b |
백스페이스 |
0x0008 |
| \f |
폼 피드 |
0x000C |
| \n |
줄 바꿈 |
0x000A |
| \r |
캐리지 리턴 |
0x000D |
| \t |
가로 탭 |
0x0009 |
| \U |
서로게이트 쌍에 대한 유니코드 이스케이스 시퀀스 |
\Unnnnnnnn |
| \u |
유니코드 이스케이프 시퀀스 |
\u0041 = "A" |
| \v |
세로 탭 |
0x000B |
| \x |
가변 길이를 특징으로 하는 "\u"와 유사한 유니코드 이스케이프 시퀀스 |
\x0041 = "A" |
| (출처 : MSDN) |
C# 연산자 Operators
| [표 #5] C# 연산자 |
| 종류 |
연산자 식 |
설명 |
기
본
연
산
자 |
x.y |
멤버 액세스 연산자 |
| f(x) |
메서드 및 대리자 호출 |
| a[x] |
배열 및 인덱서 액세스 |
| x++ |
후위 증가 |
| x-- |
후위 감소 |
| new T(...) |
개체 및 대리자 생성 |
| new T(...){...} |
이니셜라이저(initializer)를 사용한 개체 생성. |
| new {...} |
익명 개체 이니셜라이저. |
| new T[...] |
배열 생성 |
| typeof(T) |
T에 대한 System.Type 개체 가져오기 |
| checked(x) |
checked 컨텍스트에 대한 식 계산 |
| unchecked(x) |
unchecked 컨텍스트에 대한 식 계산 |
| default (T) |
T 형식의 기본 값 가져오기 |
| delegate {} |
익명 함수(익명 메서드) |
단
항
연
산
자 |
+x |
ID |
| -x |
부정 연산 |
| !x |
논리 부정 연산 |
| ~x |
비트 부정 연산 |
| ++x |
전위 증가 |
| --x |
전위 감소 |
| (T)x |
x를 형식 T 형식으로 명시적 변환 |
승
제
연
산
자 |
* |
곱하기 |
| / |
나누기 |
| % |
나머지 |
가
감
연
산
자 |
x + y |
더하기, 문자열 연결, 대리자 결합 |
| x - y |
빼기, 대리자 제거 |
시
프
트
연
산
자 |
x << y |
왼쪽 시프트 |
| x >> y |
오른쪽 시프트 |
관
계
및
형
식
연
산
자 |
x < y |
보다 작음 |
| x > y |
보다 큼 |
| x <= y |
작거나 같음 |
| x >= y |
크거나 같음 |
| x is T |
x가 T이면 true를 반환하고, 그렇지 않으면 false를 반환 |
| x as T |
T로 형식화된 x 또는, null (x를 T로 형식화할 수 없는 경우)을 반환 |
같
음
연
산
자 |
x == y |
같음 |
| x != y |
같지 않음 |
할
당
및
익
명
연
산
자 |
= |
할당 연산자 |
| x op= y |
다음 연산자를 지원하는 복합 할당 :
+=
-=
*=
/=
%=
&=
|=
!=
<<=
>>= |
| (T x) => y |
익명 함수 (람다 식) |
논
리
조
건
및
null
연
산
자 |
x & y |
논리곱
- 정수 비트 AND, Boolean 논리 AND |
| x ^ y |
논리 XOR 연산자
- 정수 비트 XOR, Boolean 논리 XOR |
| x | y |
논리 OR 연산자
- 정수 비트 OR, Boolean 논리 OR |
| x && y |
조건부 논리곱 연산자
- x가 true인 경우에만 y를 계산. |
| x || y |
조건부 논리합 연산자
- x가 false인 경우에만 y를 계산. |
| x ?? y |
Null 결합
- x가 null인 경우 y로 계산하고, 그렇지 않으면 x로 계산. |
| x ? y : z |
x가 true이면 y로 계산되고, x가 false이면 z로 계산. |
| (참고 : MSDN) |
|