-
프로퍼티(Property)C# 2022. 1. 25. 17:56
1. 은닉성
객체지향의 은닉성을 지키기위해서 캡슐화를 통해 메소드를 사용하여 멤버변수에 접근하거나 반환받는 방식을 사용했다.
캡슐화 사용예시
class Orc { protected int hp; protected int attack; int GetHp() { return hp; } void SetHp(int hp) { this.hp = hp; } int GetAttack() { return attack; } void SetAttack(int attack) { this.attack = attack; } }
2. get, set(프로퍼티)
프로퍼티를 사용하면 더 이상 Get과 Set관련된 함수를 따로 만들지 않아도 된다.
get, set 선언방법
public int Hp { get { return hp; } set { hp = value; } } public int Attack { get { return attack; } set { attack = value; } }
value는 c#에서 제공하는 키워드이다.
set함수와 private
public int Hp { get { return hp; } private set { hp = value; } }
private을 통해 외부에서 사용을 금지할 수 있다.
메인함수에서 사용
static void Main(string[] args) { Orc orc = new Orc(); int hp = orc.Hp; // get 자동호출 orc.Hp = 3; // set 자동호출 }
3. 자동완성 프로퍼티
사실 get, set과 멤버변수도 일일이 타이핑 해주는 게 귀찮을 수 있다. 그래서 c#에서는 자동완성 프로퍼티를 지원해준다.
내용
public int Hp { get; set; } // private int _hp; // public int GetHp() { return _hp; } // public void SetHp(int value) { _hp = value; }
위에 처럼 코드를 정의해주면 실제로는 보이지 않는 주석안의 내용이 클래스 안에 자동으로 포함이된다.
초기화
public int Hp { get; set; } = 100;
이런식으로 프로퍼티를 선언함과 동시에 변수를 초기화 할 수 있다.
'C#' 카테고리의 다른 글
이벤트(Event) (0) 2022.01.26 대리자(Delegate) (0) 2022.01.25 추상클래스와 인터페이스(Interface) (0) 2022.01.25 object와 Generic(일반화) (0) 2022.01.25 Dictionary (0) 2022.01.25