C++을 사용할때는, 은닉성을 유지하기 위해, 변수의 기본 접근 지정자를 private으로 지정하고
getter, setter같은 함수(메소드)를 만들어서 사용하곤 했다.
위와 같은 방법을 C#에서는 조금 더 유연하고 편리한 방법을 제공하는데,
그것이 바로 프로퍼티이다.
기존의 getter,setter를 만드는 방식을 Get, Set 접근자를 이용해서 대체해준다.
class MyClass
{
private:
int age = 0;
string name = "";
public:
int Get_Age() { return age; }
string Get_Name() { return name; }
public:
void Set_Age(int Age) { age = Age; }
void Set_Name(string Name) { name = Name; }
}
이런식의 코드를
class MyClass
{
public string Name {get; set;}
public int Age {get; set;}
}
이런식으로 간단하게 바꿔줄 수 있다.
하지만 위는 단순하게 필드를 get,set만 할 때인 자동구현 프로퍼티이고,
만약 get이나 set 할때 특수한 처리를 하고 싶으면 코드 블럭을 열고,
get { /* 특수 처리 */ 필드 = value; } 을 해주면 된다.
class MyClass
{
private string name;
public string Name
{
get
{
// 특수 처리
return name;
}
set
{
// 특수 처리
name = value;
}
}
}
왜 자동구현 프로퍼티는 private필드를 따로 만들지 않고, 여기선 따로 만들었냐면
자동 구현 프로퍼티로 쓰게 되면, C#의 컴파일러가 자동으로 프로퍼티를 위한 private필드를 만들어서 사용하게 된다.
그리고 읽기 전용으로 만들고 싶으면, get만 만들고 set 접근자를 구현하지 않는 등의 접근도 가능하다.