센로그
[C#] static - Class, Constructor, Field, Method 본문
◆ static Class (정적 클래스)
static 클래스는 인스턴스를 만들 수 없는 클래스로, 클래스명을 통해 멤버 변수 및 메서드에 접근할 수 있는 클래스이다.
전역적으로 접근해야하는 유틸리티 클래스를 만들때 주로 사용한다.
사용법
- class 키워드 앞에 static 키워드를 붙여서 static Class를 만들 수 있다.
특징
- static Class는 인스턴스를 만들 수 없다.
- static Class의 모든 멤버(필드, 메서드, 생성자 등)는 static으로 선언되어야 한다.
- static Class는 어디서든 클래스 이름을 통해서 접근할 수 있다. (전역적으로 접근해야할 때 주로 사용)
◆ static Constructor (정적 생성자)
모든 클래스는 일반 생성자 외에 static 생성자를 가질 수 있다.
일반 생성자는 인스턴스가 만들어질 때마다 호출되지만, static 생성자는 해당 클래스가 처음으로 로드될 때(not 처음 생성할 때, but 처음 접근할 때) 한번만 호출된다. static 필드들을 초기화할 때 주로 사용한다.
사용법
- 클래스 생성자 앞에 static 키워드를 붙여서 static 생성자를 만들 수 있다.
특징
- static 생성자는 해당 클래스가 처음으로 로드될 때 한번만 호출된다.
- static 생성자는 접근 한정자(public, private, ..등)나 매개변수를 가질 수 없다.
- static 생성자 내부에서는 static 멤버 변수 및 static 메서드만 접근 가능하다.
◆ static Field (정적 필드)
static field는 인스턴스 생성 없이 클래스명을 통해 클래스 필드(멤버 변수)에 접근할 수 있도록 한다.
보통 전역에서 사용할 변수를 만들 때 쓴다.
사용법
- 클래스의 멤버 변수 앞에 static 키워드를 붙여서 static 필드를 만들 수 있다.
특징
- 인스턴스를 통해 static 필드에 접근할 수는 없다.
- 생성자 없이 선언과 동시에 초기화할 경우(static int a = 3;), Main 함수에 들어가기 전에 초기화된다.
- static 생성자가 있는 경우, 클래스 첫 로드 시점에 초기화됨. (일반 생성자는 영향X)
- Main 함수에서 해당 클래스의 어떤 static 필드에도 접근하지 않는 경우, 클래스 첫 로드 시점에 초기화됨.
◆ static Method (정적 메서드)
static method는 인스턴스 생성 없이 클래스명을 통해 클래스 메서드에 접근할 수 있도록 한다.
보통 전역에서 사용할 함수를 만들 때 쓴다.
사용법
- 클래스의 멤버 메서드 앞에 static 키워드를 붙여서 static 메서드를 만들 수 있다.
특징
- 인스턴스를 통해 static Method를 호출할 수는 없다.
- static Method 내부에서는 static 필드만 접근 가능하다.
※ static 속성(property)도 동일하게 동작한다.
'게임 > Unity, C#' 카테고리의 다른 글
[C#] Task 메서드 비교 (0) | 2023.07.13 |
---|---|
[C#] StringBuilder (0) | 2023.07.11 |
[C#] Extension Method (확장 메서드) (0) | 2023.07.10 |
[Unity] Awake(), Start(), OnEnable() 차이 (0) | 2023.07.07 |
[C#] Boxing(박싱), UnBoxing(언박싱) (0) | 2023.07.04 |
Comments