Programing/C#

C# 프로그래밍의 기초: 생성자와 소멸자

유니얼 2024. 8. 24. 14:47
728x90

C# 프로그래밍에서 객체의 생명주기를 관리하는 데 중요한 역할을 하는 생성자와 소멸자는 객체가 생성되고 소멸될 때 필요한 작업을 자동으로 수행하는 특수한 메서드입니다. 이 블로그 글에서는 생성자와 소멸자의 역할, 기능, 그리고 구현 방법에 대해 자세히 알아보겠습니다.

생성자(Constructor)

기능과 목적:

생성자는 클래스의 인스턴스가 생성될 때 자동으로 호출되는 메서드로, 주된 목적은 객체의 초기화입니다. 이는 객체의 필드를 초기 설정하거나, 필요한 시작 작업을 수행하는 데 사용됩니다.

 

특징:

  • 생성자는 클래스 이름과 같은 이름을 가집니다.
  • 반환 타입을 지정하지 않으며, 이는 생성자가 값을 반환하지 않기 때문입니다.
  • 파라미터를 포함할 수 있어 객체 생성 시 초기 데이터를 전달할 수 있습니다.

기본 생성자:

  • 파라미터가 없는 생성자를 기본 생성자라고 합니다.
  • 클래스에 명시적으로 어떠한 생성자도 정의하지 않은 경우, 컴파일러가 자동으로 기본 생성자를 제공합니다. 하지만 다른 생성자가 정의되어 있으면, 기본 생성자는 자동으로 생성되지 않습니다.

파라미터가 있는 생성자:

  • 외부에서 데이터를 받아 객체의 상태를 초기화할 수 있습니다.

소멸자(Destructor)

기능과 목적:

소멸자는 객체가 더 이상 필요 없어 메모리에서 해제될 때 자동으로 호출되는 메서드입니다. 주로 객체가 사용한 외부 리소스를 정리하는 데 사용됩니다.

 

특징:

  • 클래스 이름 앞에 ~를 붙여 정의합니다 (예: ~Car()).
  • C#에서는 가비지 컬렉터가 대부분의 메모리 관리를 자동으로 처리하기 때문에, 소멸자를 사용할 필요가 적습니다.
  • 소멸자의 호출 시점은 가비지 컬렉터의 판단 하에 이루어지므로 예측이 어렵습니다.

전체예제 코드

using System;

namespace CSharp_ProgramingStudy.Chapter5_OOP
{
    class Car
    {
        public string color;  // Car 클래스의 속성

        // 파라미터가 있는 생성자
        public Car(string initialColor)
        {
            color = initialColor;  // 객체의 color 속성을 초기화
        }

        // 소멸자
        ~Car()
        {
            // 리소스 정리 로직
            Console.WriteLine("Cleaning up resources...");
        }
    }

    public class Class6
    {
        public void Run()
        {
            Car myCar = new Car("blue");
            Console.WriteLine(myCar.color);  // 출력: blue
        }
    }
}

결론

C#의 생성자와 소멸자는 객체의 생명주기를 효과적으로 관리할 수 있게 해주는 중요한 요소입니다. 생성자는 객체가 생성될 때 초기화를 보장하며, 소멸자는 객체가 소멸될 때 필요한 정리 작업을 수행합니다.

 

반응형