반응형
생성자, 소멸자
[생성자]
- 객체를 초기화할 때 사용
- 값을 리턴하지 않음(리턴타입이 있으면 안됨)
- 클래스 이름과 동일
- 인수없이 초기화 가능
- 여러 생성자가 동시 존재할 수 있음(오버로드)
[소멸자]
- 클래스의 모든 인스턴스를 제거하고 리소스를 해제하는데 사용
- (~) + 클래스명
- 구조체에서는 사용 불가
- 단 하나만 존재 가능
- 오버로드 되거나 상속될 수 없음
- 호출 불가 -> 자동 호출
- 매개변수 없음
[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");
}
}
}