You also want an ePaper? Increase the reach of your titles
YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.
"Name cannot be blank",<br />
}<br />
nameof(Name));<br />
lock (syncHandle)<br />
name = value;<br />
}<br />
}<br />
// 이하 생략<br />
속성은 메서드와 매우 유사해서, 속성을 virtual로도 설정할 수 있다.<br />
public class Customer<br />
{<br />
public virtual string Name<br />
{<br />
get;<br />
}<br />
}<br />
set;<br />
앞의 몇몇 예제에서 사용한 암묵적 속성 implicit property 에 대해서도 살펴보자. 데이터를 저장하는<br />
저장소를 속성을 이용하여 감싸는 방식은 일반적인 패턴인데, 게터와 세터에서 값의 유효성을<br />
검사하는 로직이 필요 없을 수도 있다. 이 경우 <strong>C#</strong>의 암묵적 속성 문법을 사용하면 필드를 속<br />
성으로 감싸기 위한 코드를 크게 줄일 수 있다. 컴파일러는 데이터를 실제로 저장할 private<br />
필드(통상 backing store라고 부르는)와 get/set 접근자를 자동으로 생성해준다.<br />
인터페이스를 정의할 때에도 속성을 사용할 수 있다. 이 경우 암묵적 속성과 비슷한 문법을 사<br />
용한다. 다음 코드는 제네릭 generic 인터페이스를 정의할 때 속성을 사용한 예다. 암묵적 속성과<br />
비슷해 보이지만, 인터페이스의 정의이므로 어떤 구현부도 포함되지 않는다. 인터페이스는 단<br />
지 이를 구현하는 모든 타입이 반드시 준수해야 하는 계약을 정의하는 것이기 때문이다.<br />
public interface INameValuePair<br />
{<br />
string Name { get; }<br />
T Value { get; set; }<br />
}<br />
속성은 내부 데이터에 접근하거나 그 값을 수정하기 위해서 메서드의 기능을 확장한 <strong>C#</strong> 언어<br />
22 <strong>모어</strong> <strong>이펙티브</strong> <strong>C#</strong>