[C# 3.0] 자동 구현 속성

eunjin lee·2022년 9월 12일
0

C# 9.0 프로그래밍

목록 보기
28/50

get/set에 별다른 내용이 없음에도 불구하고 private 필드와 속성을 각각 구현하는 것은 거추장스럽다. 그렇다고 public 필드로 정의해버리자니 OOP의 캡슐화 원칙에 어긋난다. 자동 구현 속성은 개발자가 거추장스럽게 직접 모든 것을 적지 않아도, 빌드 시 OOP의 캡슐화 원칙에 따른 것처럼 컴파일 된다.


■ 일반적인 속성 구현은 다음과 같다.
✍ 샘플 코드

private string _name;

public string Name{ get{return _name;} set{_name = value; }}

■ 위의 코드는 아래와 같이 public으로 정의하여 get/set하는 것과 별다를 것이 없다.
✍ 샘플 코드

pubilc string Name;

■ 그러나 public 필드로 정의해버리면, OOP의 캡슐화에 어긋난다. 따라서 자동 구현 속성을 이용해 아래와 같이 단순하게 코드를 작성한다.
✍ 샘플 코드

public string Name{get; set;}

■ 빌드 시 C# 컴파일러는 위의 코드를 아래와 같이 확장하여 컴파일한다.
✍ 샘플 코드

private string Name의_자동_속성에_대응되는_고유_식별자
private string Name
{
	get { return 고유_식별자;}
    set { 고유_식별자 = value;}
}

■ 자동 구현 속성이 public 필드 정의보다 좋은 점은, get/set에 서로 다른 접근 제한자를 지정할 수 있다는 것이다.
✍ 샘플 코드

    class Car
    {
        private string _model;
        public string Model
        {
            get { return _model; } 
            set { _model = value;
                if (_model.StartsWith("B"))
                    Color = "Black";
                else if (_model.StartsWith("W"))
                    Color = "White";
            }
        }

        public string Color {get; private set; }
         
    }

0개의 댓글