이 강의는, 생성자에 대해서 알아보겠습니다.
생성자는 객체를 생성할때 호출되는 메소드 입니다.
생성자의 선언 방식은 다음과 같습니다.
class 클래스_이름
{
제한자 클래스_이름 (받는 변수..)
{
// 내용
}
}
위의 코드에서 생성자는 [ 제한자 클래스_이름 (받는변수..) ] 부분입니다.
보시다시피 "메소드의 선언 방식" 과 흡사한 것을 알 수 있습니다.
또한, 특징으로는 클래스명과 같은 이름을 사용한다는 것, 반환값이 없다는 것, 반환 타입이 없다는 것 입니다.
그리고 생성자는 사용해도 상관없고, 사용하지 않아도 상관없지만, 사용하지 않았을 경우에는 빈 메소드 값으로 자동으로 생성됩니다.
생성자 예시를 한번 들어보겠습니다.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Hello_World
{
class smartphone
{
string phonename; //폰 이름 필드
int version; // 폰의 버전을 나타내는 필드
string ownername; // 폰 주인을 나타내는 필드
string changedname;
public smartphone(string phonename, int version, string ownername)
{
this.phonename = phonename;
this.version = version;
this.ownername = ownername;
}
public void sayinformationaboutphone()
{
Console.WriteLine("{0} 이 이름이고, {1} 이 버전임", phonename, version.ToString());
}
public void changeowner(string changedownername)
{
changedname = changedownername;
Console.WriteLine("전 주인은 {0}, 바뀐 주인은 {1}", ownername, changedname);
}
}
class Program
{
static void Main(string[] args)
{
smartphone smart = new smartphone("iphone",6, "Lee");
smart.sayinformationaboutphone();
smart.changeowner("Kim");
}
}
}
코드 실행시 다음과 같이 나옵니다.

위의 public smartphone ~ 부분이 생성자 입니다.
위에서 한가지 짚고 넘어가야 할 점이, this 입니다. this는 매개변수 값과 클래스 내부 변수 값이 같을 때 사용됩니다. 여기서 this.phonename 이란 건 클래스 내부에 선언된 string phonename를 뜻하게 됩니다.
또한, this 와 같이 base라는 것도 있지만, 상속을 하면서 다루겠습니다.
1강 에서 배운 ,객체를 생성하는 부분을 이렇게 이해할 수도 있습니다.
클래스명 객체이름 = new 생성자(들어갈 변수); 처럼 말이죠.
생성자와 반대되는 "소멸자" 라는것도 있는데, 이건 "가비지 콜렉터" 라는 C# 에서 메모리 관리를 용이하게 하기 위해서 만든 프로그램이 제대로 메모리를 수거 가능하도록 만들었는데, 굳이 사용 안하셔도 됩니다.