본문 바로가기
게임 개발/C#

프로퍼티

by FlowTree 2020. 3. 22.
반응형

프로퍼티(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#이다 - 프로퍼티

유니티 게임 프로그래밍 에센스 - 프로퍼티

 

참고 링크

https://blog.hexabrain.net/153

반응형

'게임 개발 > 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

댓글