`value` 암시적 매개 변수
value 암시적 매개 변수
속성이나 인덱서를 선언할 때 set 접근자 안에서 value라는 이름을 마주치게 돼요. 이 value는 우리가 직접 선언한 변수가 아니라, C# 언어가 set 접근자에 기본으로 넣어 주는 암시적 매개 변수예요.
클라이언트 코드가 속성이나 인덱서에 값을 할당하면 그 값이 set 접근자로 들어오는데, 그 값을 담당하는 게 바로 value예요. 정리하면 value는 클라이언트가 속성(또는 인덱서)에 넣으려고 하는 그 값 자체를 가리키죠.
출처: C# 공식 문서 - value
본문
프로퍼티와 인덱서 선언에서 set 접근자는 암시적 매개 변수 value를 사용해요. 이 매개 변수는 접근자 메서드의 입력으로 작동해요. value라는 단어는 클라이언트 코드가 속성이나 인덱서에 할당하려는 그 값을 가리키죠.
value는 C#이 처음 등장했을 때부터 쓸 수 있는 오래된 기능이에요.
다음 예시를 볼게요. TimePeriod2에는 Seconds라는 속성이 있는데, set 접근자에서 value를 받아 백킹 필드 _seconds에 그대로 담아요. 클라이언트 입장에서는 이 작업이 단순한 할당 한 줄처럼 보이죠.
class TimePeriod2
{
private double _seconds;
public double Seconds
{
get => _seconds;
set => _seconds = value;
}
}
여기서 핵심은 set 접근자가 _seconds = value; 한 줄로 끝난다는 점이에요. 클라이언트가 Seconds에 값을 넣으면 그 값이 value로 전달되어 _seconds에 저장돼요. 유효성 검사가 필요 없고 단순히 값을 저장만 하는 속성은, 이렇게 표현식 본문(expression body) 형식으로 value를 백킹 필드에 바로 담아 주는 패턴을 자주 써요.
더 알아보기
- 속성 - Properties
- 인덱서 - Indexers
- C# 언어 사양에서
value에 대한 공식 정의는 C# 언어 사양 문서에서 확인할 수 있어요.