get, set 접근자 - cheona-thousand-man/Unity-myBasics-Wiki GitHub Wiki

1. get, set 접근자

클래스의 private 변수 캡슐화 + 외부 클래스에서 해당 private 변수를 안전하게 접근/변경하게 해 주는 메서드

  • 캡슐화 객체 내부 상태 숨김 / 외부에서 접근 시 인터페이스만 제공
  • get 접근자 property의 값 반환
  • set 접근자 property의 값 설정

2. 사용 방식

  • 기본적인 형태
public class Example
{
    private int _value;

    public int Value
    {
        get { return _value; }
        set { _value = value; }
    }
}

  • 읽기 전용 프로퍼티
public class Example
{
    private int _value;

    public int Value
    {
        get { return _value; }
    }
}

  • 쓰기 전용 프로퍼티
public class Example
{
    private int _value;

    public int Value
    {
        set { _value = value; }
    }
}
  • 자동 구현 프로퍼티
#public class Example
{
    public int Value { get; set; }
}

  • 자동 구현 + 초기 값 설정
public class Example
{
    public int Value { get; set; } = 42;
}
  • 접근 제한자(get, set 개별)
public class Example
{
    private int _value;

    public int Value
    {
        get { return _value; }
        private set { _value = value; }
    }
}
  • 계산된 프로퍼티
public class Example
{
    private int _a;
    private int _b;

    public int Sum
    {
        get { return _a + _b; }
    }
}
  • 사용자 정의 로직 추가
public class Example
{
    private int _value;

    public int Value
    {
        get
        {
            // 추가 로직 (예: 로깅)
            Console.WriteLine("Value를 가져옵니다.");
            return _value;
        }
        set
        {
            // 추가 로직 (예: 유효성 검사)
            if (value < 0)
            {
                throw new ArgumentException("Value는 0 이상이어야 합니다.");
            }
            _value = value;
        }
    }
}
  • 표현식 본문 구문1 간단한 get 접근자 구현
public class Example
{
    private int _value;
    private GameObject _visual;

    public int Value => _value;
    public bool IsAlive => _visual.activeSelf;
}
  • 표현식 본문 구문2 get, set 접근자 구현
public class Example
{
    private int _value;

    public int Value
    {
        get => _value;
        set => _value = value;
    }
}

3. 프로퍼티(property)

클래스, 구조체 또는 인터페이스의 데이터 멤버를 노출하는 방법, 필드와 비슷하게 작동 + 메서드처럼 동작

  • 구성요소
    • 백킹 필드(Backing Field) 프로퍼티가 값을 저장하는 데 사용한 private 필드
    • get 접근자 프로퍼티 값 반환 메서드
    • set 접근자 프로퍼티 값 설정 메서드
  • 주요 장점
    • 캡슐화 필드 직접 접근X / 프로퍼티를 통해 접근하여 데이터 보호 및 무결성 유지
    • 유연성 get, set 접근자에 추가 로직 포함 가능(값 유효성 검사 및 부수적인 작업 수행)
    • 간결성 간단한 데이터 저장/접근 코드 간결히 작성