센로그

[C#] static - Class, Constructor, Field, Method 본문

게임/Unity, C#

[C#] static - Class, Constructor, Field, Method

seeyoun 2023. 7. 10. 18:52

◆ 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