C#

[C#]자동 구현 프로퍼티(Auto Property)

DevStory 2021. 5. 8.

이전 포스팅에서는 프로퍼티의 개념과 간단한 사용방법을 소개했습니다.

 

자동 구현 프로퍼티는 프로퍼티를 좀 더 사용하기 쉽고 코드를 간결하게 해주는 메커니즘입니다.

 

이번 포스팅은 자동 구현 프로퍼티(Auto Property)를 사용하는 방법을 정리합니다.

 


자동 구현 프로퍼티(Auto Property)

자동 구현 프로퍼티는 프로퍼티로 작성한 코드를 더 간결하게 해주는 메커니즘입니다.

 

접근자에 조건이 없는 경우 사용되며, 필드를 작성하지 않아도 된다는 이점이 있습니다.

 

프로퍼티(Property) 기반의 코드

필드를 선언하고 프로퍼티의 get, set 접근자를 작성합니다.

class Person
{
  private string age; // field

  public string Age   // property
  {
    get { return age; }   // get method
    set { age = value; }  // set method
  }
}

 

자동 구현 프로퍼티(Auto Property) 기반의 코드

필드를 작성하지 않아도 되며, get, set 접근자에 return문과 필드의 값을 대입하는 코드를 생략할 수 있습니다.

class Person
{
  public string Age   // property
  {
    get; 
    set;
  }
}

 

아래와 같이 프로퍼티(Property)를 선언과 동시에 값을 초기화 가능합니다.

※ 프로퍼티를 선언과 동시에 값을 초기화하는 방법은 C# Version에 따라 지원이 안될 수도 있습니다.

class Person
{
  public string Age   // property
  {
    get; 
    set;
  } = "29";
}

캡슐화를 위반하는가?

프로퍼티(Property)는 정보은닉을 위해 변수를 private으로 선언하고 접근자를 사용하여 변수에 접근하는데, 자동 구현 프로퍼티(Auto Property)는 변수를 public으로 선언한 경우와 큰 차이가 없습니다.

 

그렇기에 자동 구현 프로퍼티는 캡슐화를 위반하는 것처럼 생각할 수 있지만,

프로퍼티의 3가지 유형을 적용받으므로 캡슐화를 위반하지 않습니다.

 

유형 설명
읽기-쓰기 전용 get및 set접근자를 모두 포함하는 속성입니다.
읽기 전용 get 접근자만 존재하는 속성입니다.
쓰기 전용 set 접근자만 존재하는 속성입니다.

 

아래 코드처럼 자동 구현 프로퍼티에서 set 접근자 앞에 private를 추가하여 값을 변경할 수 없도록 구현할 수 있습니다.

class Person
{
  public string Age   // property
  {
    get; 
    private set;
  } = "29";
}

 

 

반응형

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

[C#]Call By Value, Call By Reference  (0) 2021.05.16
[C#]값 형식(Value Types)과 참조 형식(Reference Types)  (3) 2021.05.15
[C#]물음표(?) 사용  (2) 2021.05.13
[C#]Nullable 타입  (3) 2021.05.13
[C#]프로퍼티(Property) - get, set 사용  (0) 2021.05.08

댓글