본문 바로가기

[C#] 클래스(Class) 생성자(Constructor), 소멸자(Destructor)

C#
·
2019. 11. 13. 17:12
반응형

생성자(Constructor)

생성자는 객체가 만들어질 때 정의하는 메소드입니다. 생성자의 이름은 클래스 이름과 동일하게 정의하고 반환형은 없고 매개변수를 가집니다.

생성자는 메소드와 마찬가지로 오버로딩이 가능하고 객체가 만들어질 때 직접 호출합니다. 생성자는 주로 객체의 필드를 초기화 할 때 사용합니다.

다음은 생성자의 예제 코드입니다.

 

출력결과

dog1 Name : 없음, Breeds : 없음
dog2 Name : 곰이, Breeds : 시바

 

소멸자(Destructor)

소멸자(종료자)는 객체가 없어질 때 정의하는 메소드입니다. 소멸자의 이름은 클래스 이름 앞에 ~를 붙여서 정의하고 반환형과 매개변수가 없습니다.

소멸자는 오버로딩 할 수 없으며 직접 호출할 수 없습니다. 소멸자는 CLR의 가비지 컬렉터가 객체가 소멸되는 시점을 판단해서 소멸자를 자동으로 호출합니다.

소멸자는 가급적이면 사용하지 않는 것을 추천합니다. 그 이유는 CLR의 가비지 컬렉터가 언제 호출되는지 알 수 없기 때문입니다. 가비지 컬렉터가 호출되지 않으면 오히려 메모리가 해제되지 않아서 메모리가 부족할 수도 있습니다. C#에서는 메모리 관리는 가비지 컬렉터가 알아서 하기 때문에 소멸자에서 직접 구현하는 것보다는 카비지 컬렉터에게 맡기는 편이 더 좋습니다.

다음은 소멸자의 예제 코드입니다.

 

출력결과

Dog()
~Dog()
반응형
블로그 이미지
Frontend Engineer

댓글