"깊이"가 다른 게임개발자 허민영

유저에서 게임까지, 철학에서 코딩까지, 본질을 보는 게임개발

소프트웨어 공학/코딩

C# 한정자 총 정리

허민영 2025. 1. 31. 14:41

1. 접근 제한 한정자

C#에서 멤버의 접근 범위를 결정하는 한정자입니다.

  • public (클래스, 필드, 메서드) : 어디서든 접근 가능 (가장 개방적)
  • private (필드, 메서드) : 같은 클래스 내부에서만 접근 가능 (기본 접근 수준)
  • protected (필드, 메서드) : 같은 클래스 및 파생 클래스에서만 접근 가능
  • internal (클래스, 필드, 메서드) : 같은 어셈블리(프로젝트) 내에서만 접근 가능
  • protected internal (필드, 메서드) : 같은 어셈블리 또는 파생 클래스에서만 접근 가능
  • private protected (필드, 메서드) : 같은 클래스 또는 같은 어셈블리 내의 파생 클래스에서만 접근 가능

 

2. 클래스 및 멤버 확장 관련 한정자

객체 지향 프로그래밍(OOP)에서 상속과 관련된 한정자입니다.

  • abstract (클래스, 메서드) : 해당 클래스 또는 메서드가 반드시 상속받아 구현되어야 함
  • sealed (클래스) : 상속할 수 없는 클래스
  • virtual (메서드) : 오버라이딩이 가능한 메서드 지정
  • override (메서드) : 부모 클래스의 virtual 또는 abstract 메서드를 재정의함
  • new (필드, 메서드) : 부모 클래스의 멤버를 숨기고 새롭게 정의함

 

3. 정적(Static) 및 읽기 전용(Readonly) 한정자

인스턴스가 아닌 클래스 자체에 속하거나 변경 불가능한 값을 정의할 때 사용합니다.

  • static (클래스, 필드, 메서드) : 인스턴스가 아닌 클래스 자체에 속하는 멤버
  • const (필드) : 컴파일 타임 상수, 선언과 동시에 초기화 필요
  • readonly (필드) : 런타임 상수, 생성자에서만 초기화 가능

 

4. 비동기 및 병렬 처리 관련 한정자

비동기 프로그래밍과 관련된 한정자입니다.

  • async (메서드) : 비동기 메서드 정의
  • await (메서드) : 비동기 메서드 실행 대기 (async 메서드 내에서만 사용 가능)
  • volatile (필드) : 다중 스레드 환경에서 변수의 값이 최신 상태를 유지하도록 보장

 

5. 기타 한정자

기능적으로 특정한 의미를 가지는 다양한 한정자입니다.

  • extern (메서드) : 외부에서 정의된 메서드(주로 P/Invoke에 사용)
  • unsafe (메서드) : 포인터 연산 등을 허용하는 코드 블록 지정
  • fixed (필드) : 가비지 컬렉션이 이동하지 못하도록 특정 변수를 고정
  • partial (클래스, 메서드) : 하나의 클래스를 여러 파일에 나누어 정의 가능