목차
- 프로퍼티란?
- get, set 접근자
- 프로퍼티에 접근법(사용법)
프로퍼티란?
개념적인 부분을 설명하기 위해 예시를 하나 만들어보자면
class Player
{
private int hp;
}
다음과 같이 Player라는 클래스에 필드의 안정성을 보장하기 위해
보통 private 또는 protected 접근제한자를 사용하게 되고,
외부에서 필드에 접근하도록 하기 위해 다음과 같이 public 제한자를 갖는 메소드를 생성한다.
class Player
{
private int hp;
public int GetHp() { return hp; }
public void SetHp(int hp) { this.hp = hp }
}
이런 과정은 필드가 많아지면 코드가 길어지며 가독성이 떨어지게 되는데,
C#에서는 이 모든 과정을 간단하게 만들어주는 문법이 있는데, 바로 프로퍼티(속성)이다.
위의 코드는 C#에서는 아래와 같은 코드로 작성될 수 있다.
class Player
{
public int Hp { get; set; }
}
도대체 get과 set이 무엇이길래 이렇게 코드를 간결하게 만들어줄 수 있는걸까?
get, set 접근자
get 접근자는 '읽기'
set 접근자는 '쓰기'
라고 생각하면 편할 것 같다.
프로퍼티는 get, set 두 접근자를 모두 가질 필요는 없으며,
get 접근자만 가질 경우 읽기 전용,
set 접근자만 가질 경우 쓰기 전용으로 간주하면 된다.
위에서 작성한 것처럼 get; set;의 형태로만 작성이 가능한 것이 아니라,
각 접근자는 다음과 같이 메소드와 같은 형태로도 작성이 가능하다.
class Player
{
private int hp;
public int Hp
{
get { return hp; }
set { hp = value; }
}
}
추가적으로 접근자 내에서 메소드, 조건문 등의 호출 또한 가능하며,
접근 제한자, static 키워드, virtual 키워드와 함께 선언이 가능하다.
get 접근자의 경우 return 혹은 throw 문으로 끝나야 한다.
프로퍼티는 변수와는 다르기 때문에 ref, out 키워드를 사용한 매개변수로 전달이 불가능하다.
프로퍼티에 접근법(사용법)
class Player
{
//C# 7.0부터는 프로퍼티에 초기화 문법이 적용됨
public int Hp { get; set; } = 10;
}
다음과 같이 정의된 클래스의 프로퍼티에 접근하는 방법을 알아보자.
Player player = new Player();
다음과 같이 Player 클래스의 객체 player가 있다고 할 때,
player의 Hp에 값을 쓰는 방법(set)은 다음과 같다.
player.Hp = 100;
player의 Hp값을 읽는 방법(get)은 다음과 같다.
int hp = player.Hp;
위 방식은 public 접근 제한자로 선언된 변수에 접근하는 방식과 동일한데,
프로퍼티는 get 접근자와 set 접근자를 통해 접하는 것이기 때문에
간결한 코드로 속성은 보호하며 쉽게 접근할 수 있다는 장점이 있다.
Reference - Rookiss님의 게임 개발 시리즈, Microsoft Learn
'C#' 카테고리의 다른 글
[C#] 인터페이스 (Interface) (0) | 2023.08.24 |
---|---|
[C#] 일반화 (Generic) (0) | 2023.08.23 |
싱글톤(Singleton) 패턴 (0) | 2023.08.23 |
댓글