어떤 변수를 수정하는 것은 아무나 할 수 없고 읽는 것은 어디에서나 가능해야 한다고 가정해보자.

    public class A : MonoBehaviour
    {
    	// jeju라는 변수를 다른 곳에서 읽을 수는 있지만 수정할 수 없게 하려면
    	private string Jeju;
    	
        // 수정하는 함수
        private void SetJeju(string value)
        {
        	Jeju = value;
        }
        
        // 읽는 함수
        public string GetJeju()
        {
        	return Jeju;
        }
    }

    이렇게 두 개의 함수를 만들어줘야 한다.

    이런 변수가 하나 있을 때는 함수를 이렇게 만들어주면 되지만 여러 개라면 그때마다 2개씩 함수를 만들어줘야 되서 굉장히 비효율적이다.

    그럴 때 프로퍼티라는 것을 쓰게 된다.

     

    프로퍼티 속성
    public class A : MonoBehaviour
    {
    	private string Jeju;
    	
        // 프로퍼티 만들기 : 괄호 안에 get과 set을 만들어준다. value는 그대로 써야 된다.
        public string JejuP { get { return Jeju; } private set { Jeju = value; }}
    }

    이런 식으로 프로퍼티를 만들어서 함수를 하나로 쉽게 만들 수 있다.

    거기다 접근 지정자를 써서 은닉성 보장까지 쉽게 할 수 있다.

    public class A : MonoBehaviour
    {
    	private string Jeju;
        private string Nomad;
    	
        // return을 단순 변수가 아닌 계산도 가능하고 조건문도 넣을 수 있다.
    	public string JejuP { get { return Jeju + Nomad; } private set { if (value == "제주") Jeju = "제주도"; else Jeju = value;}}
    }

    이렇게 프로퍼티에 조건문을 넣을 수도 있다.

     

    더 쉽게 프로퍼티를 쓰는 법도 있다.

    public string Nomad { get; set; }
    
    // 이렇게 하면 겟과 셋을 넣어줄 수 있고 변수처럼 쓸 수도 있다.
    Nomad = "노마드";
    print(Nomad);

     

     

    인덱서

    프로퍼티와 역할은 같은데 쓰기 좀 더 편하게 만들어 놓았다.

    public class Blog
    {
    	public int[] temp = new int[5];
        
        // this는 현재 클래스를 가르키는 예약어다.
        public int this[int index]
        {
        	get { return temp[index]; }
            set { temp[index] = value; }
        }
    }
    
    // 인덱서가 없을 때 temp 배열을 가지고 오려면 클래스에서 프로퍼티를 불러와야 된다.
    Blog.temp[3] = 1;
    
    // 인덱서가 있다면 바로 부를 수 있다.
    temp[3] = 1;

    프로퍼티이기 때문에 인덱서의 get과 set에도 조건문 등을 적용할 수 있다.

     

    ※ 함께 읽으면 좋은 C# 기초

     

    C# 클래스 상속 클릭!

    C# 구조체 델리게이트 클릭!

    C# 컬렉션 리스트, 큐, 스택, 해시테이블, 딕셔너리, arraylist 클릭!

    C# 배열 선언, 사용법 클릭!

    C# 조건문, 반복문 클릭!

     

    C# 연산자, ++ 사용법 클릭!

    C# 전역변수, 지역변수, 접근 지정자 클릭!

    C# 함수 정의와 호출 클릭!

    C# 기본 자료형 클릭!

    C# print, 주석, 변수 클릭!

     

    'IT > 코딩' 카테고리의 다른 글

    C# 무명 메소드, 람다식, Action, Func, 예외 처리  (0) 2021.12.18
    C# 인터페이스, 형식 매개 변수 T  (0) 2021.12.17
    C# 클래스 상속  (0) 2021.12.15
    C# 구조체 델리게이트  (0) 2021.12.14
    C# 네임스페이스 Namespace  (0) 2021.12.13