상위 목록: 하위 목록: 작성 날짜: 읽는 데 6 분 소요

생성자(Constructor)와 소멸자(Destructor)

생성자(Constructor)클래스와 같은 이름을 갖는 함수를 의미합니다.

객체가 초기에 생성될 때 자동으로 1회 호출되는 함수입니다.

주로 객체 내의 정보를 초기화 하는 수단이며, return 값이 없습니다.

  • Tip : 명시적으로 생성자를 선언하지 않아도 컴파일러가 암시적으로 기본 생성자를 생성합니다.


소멸자(Destructor)란 객체가 메모리에서 제거될 때마다 실행되는 함수입니다.

가비지 컬렉터(garbage collector)가 객체의 소멸을 관리하기 때문에 언제 실행될지 예측할 수 없습니다.

  • Tip : 명시적으로 소멸자를 선언하지 않아도 컴파일러가 암시적으로 기본 소멸자를 생성합니다.


세부 코드

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Project
{
    class ClassFile
    {
        public ClassFile()
        {
            Console.WriteLine("생성");
        }

        public void start()
        {
            Console.WriteLine("실행");
        }

        ~ClassFile()
        {
            Console.WriteLine("소멸");
        }
    }
}

위와 같이 클래스 파일을 만들고 생성자와 소멸자를 구성하였습니다.


private void button1_Click(object sender, EventArgs e)
{
    ClassFile class_start = new ClassFile();
    class_start.start();
}

button1에 ClassFile을 불러오고 start()를 실행할 경우 생성, 실행 문구를 확인할 수 있습니다.


private void button2_Click(object sender, EventArgs e)
{
    GC.Collect();
}

button2가비지 컬렉터(garbage collector)를 호출하면 소멸이라는 문구를 확인할 수 있습니다.

GC.Collect()는 더 이상 활용되지 않는 자원(주로 메모리)을 검출하여 제거를 수행하는 모듈입니다.


class 이용하여 객체를 만들 때 초기화해야 하거나 1회 실행되어야 하는 코드가 있을 때 생성자를 이용합니다.

소멸자는 언제 호출될지 모르기 때문에 특별한 경우가 아니라면, 구현하지 않는 것이 좋습니다.

댓글 남기기