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 접근자에 추가 로직 포함 가능(값 유효성 검사 및 부수적인 작업 수행)
- 간결성 간단한 데이터 저장/접근 코드 간결히 작성