class MyClass
{
private int num;
public int Num
{
get { return num; }
set { num = value; }
}
}
MyClass my;
my.Num = 3;
위의 "읽고 쓰기"만 하는 프로퍼티는 논리 없이 단순하다.
이런 경우를 위해서 "자동구현 프로퍼티"를 제공한다.
class MyClass
{
private int num;
public int Num
{
get; set;
}
}
이렇게 읽고 쓰기만할때 이런식으로 사용가능.
또한 C# 7.0부터 프로퍼티 선언과 동시에 초기화 가능하다.
class MyClass
{
private int num;
public int Num { get; set; } = 123;
}
보통 객체를 만들어서 초기화를 할때
TestClass c1 = new TestClass(value1, name);
이렇게 인자를 넣어서 초기화를 했는데 (그러면 오버라이딩된 생성자가 호출이됨)
TestClass c1 = new TestClass()
{
Name = "김",
Age = 22,
} // 초기화 하고싶은 부분만 프로퍼티로 초기화 가능함.
이렇게 생성자를 프로퍼티를 통해 원하는 부분만을 초기화가 가능하다.
class Info
{
public string Name { get; set; }
public DateTime BirthDay { get; set; }
public int Age
{
get { return new DateTime(DateTime.Now.Subtract(BirthDay).Ticks).Year; }
}
}
이렇게 클래스가 있다면
static void Main(string[] args)
{
Info a = new Info()
{
Name = "서현",
BirthDay = new DateTime(1997, 10, 15)
};
Console.WriteLine(a.Name);
Console.WriteLine(a.BirthDay);
Console.WriteLine(a.Age);
}
이런식으로 사용할 수 있다는 것이다.
프로퍼티랑 똑같은데 값초기화를 한번밖에 못한다.
public string Name { get; init; }
set처럼 외부에서 값 셋팅이 가능하지만 객체를 초기화할때 만 가능하다.