프로퍼티란 클래스의 필드(변수)에 안전하게 접근하기 위한 C#의 문법 구조이다.
겉으로는 변수처럼 보이지만, 내부적으로는 메서드를 통해 값을 읽고 쓰는 방식으로 동작한다.
단순한 값 저장뿐만 아니라, 값이 변경될 때 검증, 제한, 이벤트 호출, 후처리 로직을 함께 넣을 수 있다는 점에서 자주 사용된다.
주로 캡슐화, 데이터 보호, 상태 관리, 외부 접근 제어와 같은 구조에서 활용된다.
프로퍼티는
값을 가져오는 get과 값을 설정하는 set으로 구성된 멤버이다.
외부에서는 변수처럼 보이지만, 실제로는 내부에서 메서드가 실행된다.
즉 “필드에 직접 접근하지 않고, 통로를 하나 만들어 제어한다”는 개념이다.
필드를 직접 공개하면
public int health;
어디서든 값이 마음대로 바뀔 수 있다.
프로퍼티를 사용하면
private int health;
public int Health
{
get { return health; }
set { health = value; }
}
값을 읽고 쓸 때마다 반드시 get과 set을 거치게 된다.
이 구조를 통해 나중에 제한 조건이나 추가 로직을 쉽게 넣을 수 있다.
프로퍼티는 다음과 같은 형태로 선언한다.
private int level;
public int Level
{
get
{
return level;
}
set
{
level = value;
}
}
get: 값을 읽을 때 실행된다
set: 값을 할당할 때 실행된다
set 내부의 value는 외부에서 전달된 값이다
사용하는 쪽에서는
일반 변수처럼 접근한다.
player.Level = 5;
int currentLevel = player.Level;
하지만 실제로는
Level = 5를 실행하면 set이 호출되고
Level을 읽으면 get이 호출된다.
필드가 단순히 값을 저장하는 용도라면
C#에서는 자동으로 필드를 만들어주는 문법을 제공한다.
public int Speed { get; set; }