getter 와 setter의 사용에 대하여.
        [Serializable]
        public class ButtonClickedEvent : UnityEvent
        {
        }

        public bool interactable = true;

        [SerializeField]
        private ButtonClickedEvent m_onClick = new ButtonClickedEvent();

        private Animator animator;

        private bool blockInput;

        public ButtonClickedEvent onClick
        {
            get { return m_onClick; }
            set { m_onClick = value; }
        }

위와 같은 형태의 코드를 접해서, 이 경우 getter와 setter 를 사용하는 형태이기 때문에 이와 같은 형태의 코드에 대한 이해를 돕기 위해서 해당 내용에 대해서 검색해보고 그 내용을 첨부해둔다.

getter와 setter의 사용을 조금 더 익숙하게 만들자.


gpt

위의 코드는 C#에서 프로퍼티(Property)를 정의하는 방법 중 하나입니다. 프로퍼티는 클래스의 필드(멤버 변수)에 간접적으로 접근할 수 있게 하는 방법 중 하나로, 데이터 캡슐화(Data Encapsulation)를 촉진하고 객체 지향 프로그래밍의 기본 원칙 중 하나인 정보 은닉(Encapsulation)을 구현합니다.

public ButtonClickedEvent onClick
{
    get { return m_onClick; }
    set { m_onClick = value; }
}

여기서:

  • onClick은 프로퍼티의 이름입니다.
  • ButtonClickedEvent는 프로퍼티가 반환하는 데이터 타입입니다.
  • m_onClick은 프로퍼티에 대응하는 private 필드(멤버 변수)입니다.

Getter (Get 메서드):

get { return m_onClick; }
  • get은 프로퍼티의 값을 반환하는 데 사용되는 키워드입니다.
  • return m_onClick;onClick 프로퍼티가 호출될 때 private 필드인 m_onClick의 값을 반환합니다.

Setter (Set 메서드):

set { m_onClick = value; }
  • set은 프로퍼티에 값을 할당하는 데 사용되는 키워드입니다.
  • m_onClick = value;onClick 프로퍼티에 값을 할당할 때 private 필드인 m_onClick에 값을 저장합니다.

사용 예시:

// 객체 생성
var myObject = new YourClass();

// 프로퍼티 값 읽기
ButtonClickedEvent clickEvent = myObject.onClick;

// 프로퍼티 값 쓰기
myObject.onClick = new ButtonClickedEvent();

프로퍼티를 사용하는 주된 이유는 다음과 같습니다:

  1. 캡슐화 (Encapsulation): 프로퍼티는 클래스 내부의 상세한 구현을 숨기고, 외부에서 간결하게 값을 읽거나 쓸 수 있게 합니다.
  2. 접근 제어 (Access Control): Getter와 Setter를 통해 프로퍼티의 읽기 전용 또는 쓰기 전용을 설정할 수 있습니다.

프로퍼티를 사용함으로써 객체의 내부 상태에 대한 접근을 조절하고, 객체의 데이터를 보호하며 유지보수성과 코드 가독성을 향상시킬 수 있습니다.

  Comments,     Trackbacks