C++ 에서 멤버의 은폐를 위해 Get(), Set() 하던짓을
C# 에서는 프로퍼티 제공으로 귀찮음이 덜하게 되었다.
public int itemCode { get; set; }
이렇게 하면 자동으로 구현이 된다.
public int itemCode { get; }
이렇게 하면 읽기 전용
여기부터는 에러사례..
public int itemCode { set; } - 에러!!
이렇게 하면 쓰기 전용이 될 것 같지만, 에러를 내며 VS 님이 친절히 자동구현 속성은 접근자가 필요하다고 설명한다.
그래서
public int itemCode { protected set; } - 에러!!
이렇게 하면 다시 한번 접근자의 엑세스 가능 한정자는 get, set 이 모두 필요하다고 에러를 뿜어 내신다.
잘못된 사례를 더 소개하면,
public int itemCode { public get; protected set; } - 에러!!
public int itemCode { protected get; protected set; } - 에러!!
protected int itemCode { get; protected set; } - 에러!!
엑세스 가능 한정자는 변수 접근범위보다 제한적이어야 한다.
대부분의 경우 수정은 내부에서만.. 그리고 외부에서는 값을 얻어오는 형태를 쓰기 때문에
public int itemCode { get; protected set; }
이런 형식을 가장 많이 사용하지 않을까 생각한다.
public class Date { private int month = 7; public int Month { get { return month; } set { if ((value > 0) && (value < 13)) { month = value; } } } }
또한 프로퍼티는 초기화도 지원이 되므로 이런식의 사용도 가능하다.
필드는 private 타입이고 접근자를 public로 선언하여 구현하는 방법도 있다.
맨앞 알파벳의 대소문자 구분은 관례로 하고 있음
'프로그래밍 > C# 프로그래밍' 카테고리의 다른 글
C# nullable 형식 - 포인터화? (0) | 2015.10.28 |
---|---|
스택과 힙 메모리 - 값으로 참조형식 참조로 참조형식 (0) | 2015.10.22 |
파티셜 클래스와 파티셜 메소드 (0) | 2015.10.18 |
IComparable, IComparer 비교정렬 (0) | 2015.10.13 |
C#에서 typedef 사용법 (0) | 2015.10.06 |