Tuesday, October 13, 2009

C# 언어 사양 주요 참고 : 형식 및 연산자

[.NET Reference #4]
C# 언어 사양 주요 참고 : 형식 및 연산자
작성자 / 게시자 : 이에아이
문서일자 : 2008년 12월 06일 (대한민국 표준시 GMT+09:00)
- NAVER 블로그 게시일자 : 2008년 12월 06일 (대한민국 표준시 GMT+09:00)
문서버전 : 1.0.1603
적용범위 : Microsoft .NET Framework / C# 언어 1.0 또는 그 이상의 버전


본 문서에서는 자주 참고할 수 있는 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 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)



문서 키워드
Keywords for this Document Microsoft .NET, C#, Data Types, Format, Formatting, Operator, 닷넷, 데이터 형식(타입), 포맷, 포매팅, 연산자
저작권 정보 :
- 본 문서의 작성 권한은 작성자에게 있습니다.
- 본 문서의 일부 내용은 미국 Microsoft 사에서 제공한 자료를 참고하였습니다. 해당 내용에 대한 저작권은 미국 Microsoft Corporation에게 있습니다.
- 본 문서에 일부 사용, 인용된 기술적, 문헌적 내용에 대한 저작권은 해당 저작권자에게 있습니다.
본 문서에 대한 의견 및 잘못된 정보에 대한 이의 제기 사항 등 여러분의 의견을 제안해주시기 바랍니다.
게시자는 여러분의 의견을 소중하게 생각합니다.
이의 제기를 할 경우에는 보다 정확한 정보 제공을 위해 객관적 근거 자료를 제시하면서 제기하여 주실 것을 권장합니다.
본 문서에 사용된 일부 요소(이미지, 사운드, 동영상, 기타 첨부 문서 등)의 저작권은 해당 저작권자가 소유하고 있습니다.
따라서, 문서의 무단 복제 및 전제, 변형 게시를 금지하며 이런 행위로 인해 발생되는 모든 법적 불이익 및 사건에 대한 모든 책임은 무단 행위자 본인에게 있음을 알려드립니다.
Copyright© 2008 이에아이. All right NOT reserved. 무단 복사 및 수정 금지 / 출처 명시 없는 재배포 금지
출처 : [직접 서술] 블로그 집필 - E.A.I.