CS0273
internal class Player
{
public int PosX { get; private set; }
public int PosY { get; private set; }
private Board Board { get; private set; }
}
이 코드들 중 다음 부분에서 문제가 발생한다.
private Board Board { get; private set; }
이것을 에러가 발생하지 않도록 바꾸려면 다음과 같이 만든다:
private Board Board { get; set; }
setter는 전체 프로퍼티의 접근성(accessibility)이므로 이미 private이다.
기본적으로 프로퍼티의 `get;` 또는 `set;`의 접근 제한자를 지정하려면 다른 경우보다 더 제한적(restrictive)이어야 한다고 한다. 내가 이해한 바로는 아래와 같이 프로퍼티의 접근 제한자는 get, `set`에 접근 제한자보다 범위가 더 넓어야 한다는 것이다. 그래서 아래와 같은 케이스는 에러 발생이 일어나지 않는다.
internal Board Board { get; private set; }
public Board Board { get; private set; }
그래서 위 뜻은 프로퍼티 또는 인덱서 자체에 설정된 접근성보다 accessor-modifier(get, set)의 접근 제한자가 더 엄격하게(빡세게) 설정되어야 한다는 뜻이다.
참고로 reading, writing 모두 private이라면 그냥 필드로 사용하는 것이 나을 수도 있다. 프로퍼티의 이점은 대부분 현재 클래스 외부에 노출된 경우에만 나타난다.
참고자료
https://learn.microsoft.com/ko-kr/dotnet/csharp/misc/cs0273
'C#' 카테고리의 다른 글
[C#] Delegate, EventHandler 그리고 구조에 대한 고민 (0) | 2024.12.06 |
---|---|
[C#] 제너릭 메소드 (0) | 2024.10.06 |
[C#] 데이터 타입 (0) | 2023.01.05 |
[C#] 변수 (0) | 2023.01.04 |
[C#] Boxing과 Unboxing에 대하여 (0) | 2021.08.08 |