반응형
프로퍼티(Property)
- 프로퍼티는 C#에서 필드를 선언할 때 은닉성과 편의성 모두 지닌 기능이다.
- 은닉성: 객체 지향 언어에서 객체의 데이터를 보호하기 위해서 은닉성이 필요함.
- 편의성: 접근하기 쉬우나 데이터가 오염될 수 있음.
프로퍼티 선언 문법
class 클래스이름
{
데이터형식 필드이름; //프로퍼티에서 읽어올 값, 변경할 값을 필드(변수) 선언한 것
접근한정자 데이터형식 프로퍼티이름;
{
get
{
return 필드이름;
}
set
{
필드이름 = value;
}
}
}
접근자
- get 접근자: 필드로부터 값을 읽어옴
- set 접근자: 필드에 값을 할당함
읽기 전용 프로퍼티
set 접근자를 구현 안하면 된다.
class Myclase
{
private int myField;
public int MyField; //get 접근자만 있으면 읽기 전용 프로퍼티가 됨
{
get // 필드(myField)로부터 값을 읽어옴
{
return myField;
}
}
}
예시) 적 AI에서 추적 대상 유무를 프로퍼티로 구현
public class Enemy : LivingEntity
{
private bool hasTarget
{
get
{
//추적할 대상이 존재하고, 대상이 사망하지 않았다면 true
if (targetEntity != null && !targetEntity.dead)
{
return true;
}
//그렇지 않다면 false
return false;
}
}
}
자동 구현 프로퍼티
프로퍼티를 구현할 때 아무 논리도 없고, 단순하게 필드를 읽고 쓰기만 할 때, 간단하게 프로퍼티를 구현하는 방법이 자동 구현 프로퍼티를 이용하는 것이다.
//예문1
public class NmeCard
{
public string Name { get; set; } = "Unknown";
public string PhoneNumber { get; set; } = "0000-0000"
}
//예문2
public class PlayerInput : MonoBehavior
{
//자동 구현 프로퍼티
public float move { get; private set; }
//위와 동일한 프로퍼티
private float m_move;
public float move
{
get { return m_move; }
private set { m_move = value; }
}
}
참고한 책
이것이 C#이다 - 프로퍼티
유니티 게임 프로그래밍 에센스 - 프로퍼티
참고 링크
반응형
'게임 개발 > C#' 카테고리의 다른 글
| 매개변수(parameter), 전달인자(argument) (0) | 2020.05.15 |
|---|---|
| var (0) | 2020.04.11 |
| while (0) | 2020.03.22 |
| foreach (0) | 2020.02.19 |
| 싱글턴 패턴, 정적 변수(static) (0) | 2020.02.19 |
댓글