C# 기초

[기초] - C# 생성자와 소멸자

MuscleDeveloper5683 2024. 4. 23. 20:32
728x90
SMALL

 

생성자는 객체가 인스턴스화될 때 호출되어 초기화 작업을 수행하고,

소멸자는 객체가 메모리에서 해제될 때 호출되어 정리 작업을 수행한다.

 

생성자 (Constructor)

 

생성자는 클래스의 인스턴스가 생성될 때 호출되는 특수한 메서드!

 

생성자 예제 코드

 

아래와같이 생성자를 생성하고

 

 

 

호출을 해주면

 

 

 

결과

 

 

 

 

 


 

 

 

소멸자 (Destructor)

 

 

소멸자(종료자)는 객체가 없어질 때 정의하는 메소드이다.

소멸자의 이름은 클래스 이름 앞에 ~를 붙여서 정의하고 반환형과 매개변수가 없다.

소멸자는 오버로딩 할 수 없으며 직접 호출할 수 없다.

 

 

 

🔴 주의 사항 🔴

1. C#에서는 명시적인 소멸자를 사용하는 것이 일반적으로 권장되지 않는다.

2. C#의 가비지 컬렉터가 메모리 관리를 담당하므로 보통 개발자가 직접 소멸자를 정의할 필요는 없다.

3. 소멸자는 가급적이면 사용하지 않는 것을 추천한다그 이유는 CLR의 가비지 컬렉터가 언제 호출되는지 알 수 없기 때문이다.

4. C#에서는 메모리 관리는 가비지 컬렉터가 알아서 하기 때문에 소멸자에서 직접 구현하는 것보다는 카비지 컬렉터가 처리하는 편이 좋다.

 

 

 

소멸자의 예제 코드

 

1. 일반적인 C#에서는 소멸자는 ~ClassName() 형식으로 정의되며, 해당 클래스의 인스턴스가 가비지 컬렉터에 의해 수거될 때 호출된다.

 

 

 

 

 

결과

 

 

 

 

 

 

2. 유니티에서는 MonoBehaviour를 상속하는 스크립트 클래스에서는 C#의 일반적인 소멸자가 아닌 OnDestroy() 메서드를 사용한다. 이는 유니티 게임 오브젝트의 수명 주기와 관련이 있다.

 

 

사용 시기

  • 리소스 해제: 게임 오브젝트가 파괴될 때 필요한 리소스를 해제한다. 예를 들어, 할당된 메모리 해제, 열린 파일 또는 네트워크 연결 종료 등을 수행할 수 있다.
  • 후처리 작업: 게임 오브젝트 파괴 전에 마무리할 작업을 수행한다. 예를 들어, 다른 오브젝트에게 파괴되는 오브젝트에 대한 참조를 제거하거나 상태를 업데이트할 수 있다.

 

 

OnDestroy() 메서드는 해당 게임 오브젝트가 파괴되기 직전에 호출된다.

 

 

 

 

 

 

 

 


 

 

 

 

요약하면, 유니티에서는 생성자를 사용하여 객체의 초기화를 수행하고,

OnDestroy 메서드를 사용하여 객체의 소멸 시 필요한 정리 작업을 수행하는 것이 일반적인 방식이다.

명시적인 소멸자를 정의하는 경우는 드물며,

일반적으로는 OnDestroy 메서드를 활용하여 객체의 파괴에 대응한다.

728x90