C#에서 키워드(keyword)는 컴파일러가 미리 정의해 둔 예약어(reserved word)를 의미합니다. 이러한 키워드는 변수명, 메서드명, 클래스명 같은 식별자(identifier)로 사용할 수 없습니다.
만약 부득이하게 키워드를 식별자로 사용해야 하는 상황이라면, 키워드 앞에 @ 문자를 붙이면 됩니다. 예를 들어 @class처럼 작성하면 컴파일러가 이를 일반 식별자로 인식합니다.
또한 C#에는 특정 코드 문맥에서만 특별한 의미를 갖는 문맥 키워드(contextual keyword)도 존재합니다. 대표적인 예로 속성(property)의 접근자에서 사용되는 get과 set이 있으며, 이들은 해당 문맥에서만 키워드로 동작하기 때문에 다른 곳에서는 일반 식별자로 자유롭게 사용할 수 있습니다.
C# 예약 키워드 전체 목록
아래 표는 C#에서 예약된 키워드들을 사전순으로 정리한 것입니다.
| abstract | as | base | bool | break | byte | case |
| catch | char | checked | class | const | continue | decimal |
| default | delegate | do | double | else | enum | event |
| explicit | extern | false | finally | fixed | float | for |
| foreach | goto | if | implicit | in | int | interface |
| internal | is | lock | long | namespace | new | null |
| object | operator | out | override | params | private | protected |
| public | readonly | ref | return | sbyte | sealed | short |
| sizeof | stackalloc | static | string | struct | switch | this |
| throw | true | try | typeof | uint | ulong | unchecked |
| unsafe | ushort | using | virtual | void | volatile | while |
참고로 in과 out은 제네릭 형식 매개변수에서 공변성(covariance), 반공변성(contravariance) 한정자로도 사용되는 등 문맥에 따라 여러 역할을 수행합니다.
예약 키워드 활용 예제: bool
다음은 예약 키워드 중 하나인 bool을 실제 코드에서 사용하는 예제입니다. bool 배열을 선언하고 값을 할당한 뒤, BitArray로 변환하여 출력하는 코드입니다.
코드
using System;
using System.Collections;
class Demo {
static void Main() {
// bool 예약 키워드로 배열 선언
bool[] arr = new bool[5];
arr[0] = true;
arr[1] = true;
arr[2] = false;
arr[3] = false;
BitArray bArr = new BitArray(arr);
foreach (bool b in bArr) {
Console.WriteLine(b);
}
bool str = arr[1];
Console.WriteLine("두 번째 요소의 값: " + str);
}
}실행 결과
True True False False False 두 번째 요소의 값: True
위 예제에서 볼 수 있듯이 bool, foreach, static, void 등 다양한 예약 키워드가 하나의 프로그램 안에서 각자의 역할에 맞게 사용됩니다. 이처럼 예약 키워드는 C# 문법의 기본 구조를 구성하는 핵심 요소이므로, 식별자 이름을 지을 때는 반드시 피해야 합니다.