본문 바로가기
Programming/C#

C# 생성자와 소멸자 객체 생명주기의 시작과 끝

by Dev_카페인 2024. 6. 9.
반응형

[C#] 생성자와 소멸자: 객체 생명주기의 시작과 끝

 

안녕하세요! 이번 포스트에서는 C#의 생성자와 소멸자에 대해 자세히 알아보겠습니다. 객체지향 프로그래밍에서 객체의 생성과 소멸은 매우 중요한 개념입니다. 생성자와 소멸자를 이해하면 객체의 초기화와 정리 과정을 효과적으로 관리할 수 있습니다.

생성자 (Constructor)

생성자는 클래스의 인스턴스가 생성될 때 호출되는 특별한 메서드입니다. 생성자의 주요 역할은 객체의 초기 상태를 설정하는 것입니다. 생성자는 클래스와 같은 이름을 가지며 반환 타입이 없습니다.

기본 생성자

기본 생성자는 매개변수가 없는 생성자입니다. 클래스에 생성자를 정의하지 않으면 컴파일러가 자동으로 기본 생성자를 추가합니다.

public class Person
{
    public string Name;
    public int Age;

    // 기본 생성자
    public Person()
    {
        Name = "Unknown";
        Age = 0;
    }
}

매개변수가 있는 생성자

매개변수가 있는 생성자는 객체를 생성할 때 필요한 초기값을 전달받아 필드를 초기화할 수 있습니다.

public class Person
{
    public string Name;
    public int Age;

    // 매개변수가 있는 생성자
    public Person(string name, int age)
    {
        Name = name;
        Age = age;
    }
}

생성자 오버로딩

생성자도 오버로딩할 수 있습니다. 즉, 같은 이름을 가지지만 다른 매개변수를 가지는 여러 개의 생성자를 정의할 수 있습니다.

public class Person
{
    public string Name;
    public int Age;

    // 기본 생성자
    public Person()
    {
        Name = "Unknown";
        Age = 0;
    }

    // 매개변수가 있는 생성자
    public Person(string name, int age)
    {
        Name = name;
        Age = age;
    }
}

소멸자 (Destructor)

소멸자는 객체가 소멸될 때 호출되는 특별한 메서드입니다. C#에서는 가비지 컬렉터가 객체의 메모리를 자동으로 관리하므로 소멸자는 거의 사용되지 않습니다. 그러나 리소스를 명시적으로 해제해야 할 때 유용할 수 있습니다. 소멸자는 클래스 이름 앞에 물결표 ~를 붙여 정의합니다.

public class Person
{
    public string Name;
    public int Age;

    // 소멸자
    ~Person()
    {
        // 리소스 해제 코드
        Console.WriteLine($"{Name} 객체가 소멸됩니다.");
    }
}

생성자와 소멸자의 활용 예시

class Program
{
    static void Main(string[] args)
    {
        // 매개변수가 있는 생성자를 사용하여 객체 생성
        Person person1 = new Person("John", 30);
        Console.WriteLine($"Name: {person1.Name}, Age: {person1.Age}");

        // 기본 생성자를 사용하여 객체 생성
        Person person2 = new Person();
        Console.WriteLine($"Name: {person2.Name}, Age: {person2.Age}");

        // person1과 person2 객체는 프로그램 종료 시 소멸자 호출
    }
}

생성자와 소멸자의 중요성

  1. 객체 초기화: 생성자를 통해 객체의 초기 상태를 설정할 수 있습니다.
  2. 리소스 관리: 소멸자를 통해 가비지 컬렉션 전에 필요한 리소스를 해제할 수 있습니다.
  3. 코드의 명확성: 생성자 오버로딩을 통해 객체 초기화 방법을 다양하게 제공할 수 있습니다.

 

마치며

이번 포스트에서는 C#의 생성자와 소멸자에 대해 알아보았습니다. 생성자와 소멸자를 이해하면 객체의 생명주기를 효과적으로 관리할 수 있으며, 이를 통해 코드의 안정성과 효율성을 높일 수 있습니다. 추가적인 질문이나 궁금한 점이 있다면 언제든지 댓글로 남겨주세요!

반응형