본문 바로가기
Study/C#

[C#][Study][기초다지기] 생성자, 소멸자

by 스테디코디스트 2023. 9. 23.
반응형

생성자, 소멸자

[생성자]

- 객체를 초기화할 때 사용

- 값을 리턴하지 않음(리턴타입이 있으면 안됨)

- 클래스 이름과 동일

- 인수없이 초기화 가능

- 여러 생성자가 동시 존재할 수 있음(오버로드)

 

[소멸자]

- 클래스의 모든 인스턴스를 제거하고 리소스를 해제하는데 사용

- (~) + 클래스명

- 구조체에서는 사용 불가

- 단 하나만 존재 가능

- 오버로드 되거나 상속될 수 없음

- 호출 불가 -> 자동 호출

- 매개변수 없음

 

[ex]

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
 
namespace constructor_initialize
{
    class CalculateHeat
    {
        public int temp=0;
        
        // 생성자 1
        public CalculateHeat(int val)
        {
            temp = Convert.ToInt32(val);
        }
 
	// 생성자 2
	public CalculateHeat(string Message)
        {
            Console.WriteLine(Message.ToString());
        }
 
        public void calculate()
        {
        	// 섭씨 -> 화씨로 변환
            decimal fahrenheit = Convert.ToDecimal(temp * 1.8 + 32);
            Console.WriteLine("{0} degree centigrade into fahrenheit = {1}", temp, fahrenheit);
        }
 
        // 소멸자
        ~CalculateHeat()
        {
            Console.WriteLine("Destructor Initializes, Cleanup Process Complete");
            Console.ReadLine();
        }
    }
    class Program
    {
        public static void Main(String[] args)
        {
            CalculateHeat cl = new CalculateHeat(36);
            cl.calculate();
 
            CalculateHeat c2 = new CalculateHeat("I am second constructor");          
        }
    }
}