프로퍼티는 클래스나 구조체 내에서 값을 저장하거나 검색하는 데 사용되며, 게터(Getter)와 세터(Setter)를 통해 필드의 값을 접근하고 수정할 수 있게 해준다.
게터는 프로퍼티의 값을 반환하고, 세터는 새로운 값을 할당하는데 쓰인다.
public class Person
{
private string name; // 백업 필드
// Name 프로퍼티
public string Name
{
get { return name; } // 게터: 프로퍼티 값을 읽을 때 실행
set { name = value; } // 세터: 프로퍼티에 값을 할당할 때 실행
}
}
이와같이 작성된 Name 프로퍼티를 통해 필드값 name을 세팅하거나 가져올 수 있다.
프로퍼티를 사용할 때의 이점은 다음과 같다.
프로퍼티에 조건을 달아주면 Update를 통해 지속적으로 확인하지 않아도, 간헐적으로 이루어지는 이벤트를 적절한 시점에 발동시켜 줄 수 있다.
public class Status
{
private int hp;
public int HP
{
get { return hp; }
set
{
if (value > 0)
{
hp = value;
}
else
{
hp = 100;
}
}
}
}
위와 같은 프로퍼티를 통해 hp가 변동될 때 hp value값에 따라 다른 처리를 가지게 세팅 해 줄 수 있는 것이다.
만약 value가 0보다 큰 경우, hp 필드에 이 값을 할당한다. 그렇지 않고 value가 0 이하인 경우, hp 필드를 100으로 설정한다. 이는 HP 프로퍼티에 값을 할당할 때 자동으로 유효성 검사를 수행하고, 특정 조건에 따라 hp 필드의 값을 조정하는 로직을 구현한 것이다.
이러한 방식으로 프로퍼티를 사용하면, 필드에 대한 직접적인 접근을 제한하고, 필드 값에 대한 유효성 검사 또는 추가 로직을 캡슐화하여 클래스의 안정성과 유지보수성을 높일 수 있다.