C#

2024.03.05 - 프로퍼티(Property)

강병곤 2024. 3. 5. 18:07

정보은닉원칙에 의거해서, 특별한 이유를 제외하고는 필드(클래스 또는 구조체에서 선언되는 모든 형식의 변수)를 절대로 public으로 선언하지 않는다. 그러면 이 필드에 어떻게 접근해야 하는지 문제가 생긴다.

 

일단 public Get함수와 Set 메서드를 만들어서 클래스 내부의 변수에 접근하는 방법이 있다.

class Unit
{
    private int _value;

    public int Get_value() { return _value; }
    public void Set_value(int value) {  _value = value; }
}

 

 

그런데 필드가 엄청 많아지면? 각각의 필드마다 일일히 Get, Set 메서드를 만들어주기는 힘들다.

 

C#에서는 프로퍼티(Property: 속성)를 사용해서 이런 과정을 단축시킬 수 있다.

 

 

  • 프로퍼티 사용 예제

 

 

프로퍼티를 만들려면 필드(int _value)와 동일한 구문(int _Value)을 가져야한다. 보통 맨 앞 알파벳을 대문자로 하여 프로퍼티임을 나타낸다. 프로퍼티 안의 get 접근자 안의 내용은 프로퍼티를 읽으려고 할 때, set 접근자 안의 내용은 프로퍼티를 쓰려고 할 때 실행된다. (쉽게 말해서 프로퍼티를 사용하면 알아서 값을 읽을 때, 쓸 때 구분해서 동작함.)

 

 

  • 자동 구현 프로퍼티

이것 마저 귀찮다? 더 간단한 방법이 있다. 자동 구현 프로퍼티는 훨씬 간단한 문법으로 프로퍼티를 만들 수 있다.

 

 

문제가 있다면, 자동 구현 프로퍼티로는 private이나, protected로 제한된 변수에 접근할 수 없다.

그냥 프로퍼티를 쓰는게 좋을 것 같다.