이전 포스팅에서는 프로퍼티의 개념과 간단한 사용방법을 소개했습니다.
자동 구현 프로퍼티는 프로퍼티를 좀 더 사용하기 쉽고 코드를 간결하게 해주는 메커니즘입니다.
이번 포스팅은 자동 구현 프로퍼티(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 |
댓글