ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 프로퍼티(Property)
    C# 2022. 1. 25. 17:56

    1. 은닉성

    객체지향의 은닉성을 지키기위해서 캡슐화를 통해 메소드를 사용하여 멤버변수에 접근하거나 반환받는 방식을 사용했다.

    캡슐화 사용예시

        class Orc
        {
            protected int hp;
            protected int attack;
    
            int GetHp() { return hp; }
            void SetHp(int hp) { this.hp = hp; }
            int GetAttack() { return attack; }
            void SetAttack(int attack) { this.attack = attack; }
        }

     

    2. get, set(프로퍼티)

    프로퍼티를 사용하면 더 이상 Get과 Set관련된 함수를 따로 만들지 않아도 된다.

    get, set 선언방법

            public int Hp
            {
                get { return hp; }
                set { hp = value; }
            }
            public int Attack
            {
                get { return attack; }
                set { attack = value; }
            }

    value는 c#에서 제공하는 키워드이다.

     

    set함수와 private

            public int Hp
            {
                get { return hp; }
                private set { hp = value; }
            }

    private을 통해 외부에서 사용을 금지할 수 있다.

     

    메인함수에서 사용

            static void Main(string[] args)
            {
                Orc orc = new Orc();
                int hp = orc.Hp; // get 자동호출
                orc.Hp = 3; // set 자동호출
            }

     

    3. 자동완성 프로퍼티

    사실 get, set과 멤버변수도 일일이 타이핑 해주는 게 귀찮을 수 있다. 그래서 c#에서는 자동완성 프로퍼티를 지원해준다.

    내용

            public int Hp { get; set; }
    
            // private int _hp;
            // public int GetHp() { return _hp; }
            // public void SetHp(int value) { _hp = value; }

    위에 처럼 코드를 정의해주면 실제로는 보이지 않는 주석안의 내용이 클래스 안에 자동으로 포함이된다.

     

    초기화

    public int Hp { get; set; } = 100;

    이런식으로 프로퍼티를 선언함과 동시에 변수를 초기화 할 수 있다.

    'C#' 카테고리의 다른 글

    이벤트(Event)  (0) 2022.01.26
    대리자(Delegate)  (0) 2022.01.25
    추상클래스와 인터페이스(Interface)  (0) 2022.01.25
    object와 Generic(일반화)  (0) 2022.01.25
    Dictionary  (0) 2022.01.25
Designed by Tistory.