C#은 다른 프로그래밍 언어와 비슷하게 수식 연산자, 논리 연산자, 조건 연산자등 다양한 연산자들을 제공하고 있다. 아래 표는 각 카테코리별 연산자 및 그 샘플을 예시한 것이다.
연산자 타입 | 연산자 | 예제 |
---|---|---|
산술 연산자 | +, -, *, /, % | int a = (x + y - z) * (b / c) % d; |
할당 연산자 | =, +=, -=, *=, /=, %= | int a = 100; sum += a; [설명] sum += a 는 sum = sum + a 를 축약한 표현이다. |
증감 연산자 | ++, -- | int i = 1; i++; [설명] i++ 는 i = i + 1 를 축약한 표현이다. |
논리 연산자 | && (And), \|\| (Or), ! (Not) | if ((a > 1 && b < 0) || c == 1 || !d) |
관계/비교 연산자 | <, >, ==, !=, >=, <= | if (a <= b) |
비트 연산자 | & (AND), | (OR), ^ (XOR) | byte a=7; byte b=(a & 3) | 4; [설명] 비트 연산에서 & 는 둘이 1인 경우만 1이 되고 (예: 1 & 1 = 1), | 는 둘 중에 하나라도 1인 경우 1이 되며, ^ 는 둘 중에 하나만 1 인 경우 1이 된다. |
Shift 연산자 | >>, << | int i=2; i = i << 5; [설명] i의 값을 왼쪽으로 5 비트 이동한다. 결과값은 2의 6승 즉 64가 된다. |
조건 연산자 | ? ?? (C# 3.0 이상만 지원) | int val = (a > b) ? a : b; [설명] a가 b보다 크면 val에 a 값을 대입하고, 같거나 작으면 b 값을 대입한다 string s = str ?? "(널)"; [설명] 변수 str가 null 이면 "(널)" 이라는 문자열을 s 에 대입한다. null 이 아니면 str의 값을 s 에 대입. |
??
연산자는 Null-coalescing operator
라고 불리우는 특별한 연산자로서 C# 3.0 이상에서 지원하는 연산자이다.
?? 왼쪽 피연산자의 값이 NULL
인 경우
?? 뒤의 피연산자 값
을 리턴
?? 왼쪽 피연산자의 값이 NULL
이 아닌 경우
?? 앞의 피연산자 값
을 리턴한다.
??
연산자는 왼쪽 피연산자가NULL
이 허용되는 데이터 타입인 경우에만 사용된다.
ex.int
타입은NULL
을 가질 수 없으므로 허용되지 않지만,Nullable<int>
즉int?
타입은 허용된다.
int? i = null;
i = i ?? 0;
string s = null;
s = s ?? string.Empty;