[C# 고급문법] #1 프로퍼티(Property) & get/set 함수

    반응형

    [목차]

    1. get/set 함수
    2. 프로퍼티(Property)
    3. 자동구현 프로퍼티

    * 개인적인 공부 기록용으로 작성한 포스팅 이기에, 잘못 된 내용이 있을 수 있습니다.


    #1 get / set 함수

    프로그래머는 정보 은닉을 위해서, 클래스 내부의 속성들을 private 혹은 protected 로 선언 합니다.예를 들어 knight 클래스의 protected로 선언된 hp 변수가 있다고 가정해 봅시다.

            class knight
            {
                protected int hp;
            }

    hp 변수를 main 클래스에서 접근 하고자 하면, 아래와 같이 보호 수준 에러가 발생합니다.

            class Knight
            {
                protected int hp;
            }
            
            static void Main(string[] args)
            {
                Knight knight = new Knight();
                knight.hp = 100;
            }

    외부에서도 특정 클래스의 protected / private 속성에 접근하기 위해 , 프로그래머는 Get , Set 함수 라는 것을 정의하여 사용합니다.

            class Knight
            {
                protected int hp;
    
                // Get Function
                public int GetHp()
                {
                    return hp;
                }
    
                // Set Function
                public void SetHp(int hp)
                {
                    this.hp = hp;
                }
            }
            
            static void Main(string[] args)
            {
                Knight knight = new Knight();
                knight.SetHp(100);
                knight.GetHp();
            }

    위와 같이 public 으로 정의한 Get , Set 함수 ( Getter , Setter 함수 라고도 부릅니다. ) 를 이용해 클래스 내부의 protected / private 속성들에 접근을 하는 것이지요. * 여기 까지의 내용은 [C#] 6. OOP 은닉성 편에서도 다루었습니다.


    #2 프로퍼티(Property)

    하지만, 프로젝트의 범위가 커지면 이러한 Get Set 함수의 개수가 몇십개 이상으로 늘어날 것입니다. 

    따라서 C#은 Get Set 함수를 관리하기 쉽도록 프로퍼티(Property)라는 문법을 제공합니다.

    사용 방법은 아래와 같이, 프로퍼티 내부에 get { } set { } 형식으로 작성 하면 됩니다.

    * 프로퍼티의 set접근자 내부의 value는 전달 받은 인자 값을 의미합니다.

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

    이 처럼 프로퍼티(Property) 문법을 이용하면, 굳이 Get / Set 함수를 따로 정의해 줄 필요도 없고, 코드의 길이도 줄어들어 가독성도 좋아집니다.


    #3 자동 구현 프로퍼티

    프로퍼티(Property)를 더욱 간략화 하기 위해서 C# 7.0 버전 이상부터 자동 구현 프로퍼티 라는 문법을 제공합니다.

    자동 구현 프로퍼티를 이용하면, 아래 처럼 소스코드를 한 줄로 줄이는 것 도 가능합니다.

    [사용 방법] public int Hp { get; set; }
            class Knight
            {
                protected int hp;
                public int Hp { get; set; }
            }
            
            static void Main(string[] args)
            {
                Knight knight = new Knight();
                knight.Hp = 100;
                int myHp = knight.Hp;
            }
    반응형

    댓글

    Designed by JB FACTORY