You also want an ePaper? Increase the reach of your titles
YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.
을 정의하거나, virtual 속성을 재정의 override 하거나, 인터페이스에 정의된 속성을 구현 implement 할<br />
수 있다.<br />
암묵적 속성을 virtual로 선언한 경우라 하더라도, 파생 클래스에서 컴파일러가 생성한 뒷단<br />
필드에 직접 접근할 수 없다. 하지만 다른 가상 메서드와 마찬가지로 베이스 클래스에서 정의<br />
하고 있는 get/set 메서드를 이용하면 그 속성에 접근할 수 있다.<br />
public class BaseType<br />
{<br />
public virtual string Name<br />
{<br />
}<br />
}<br />
get;<br />
protected set;<br />
public class DerivedType : BaseType<br />
{<br />
public override string Name<br />
{<br />
get => base.Name;<br />
protected set<br />
{<br />
if (!string.IsNullOrEmpty(value))<br />
base.Name = value;<br />
}<br />
}<br />
}<br />
암묵적 속성을 사용하면 두 가지 장점이 더 있다. 첫째, 향후 데이터 검증 등을 위해서 암묵적<br />
속성을 명시적 속성으로 구현부를 추가해도 클래스의 바이너리 호환성이 유지된다. 둘째, 여전<br />
히 속성을 사용하고 있으므로 데이터 검증 코드를 한 군데만 두면 된다.<br />
초기 버전의 <strong>C#</strong>을 사용할 때에는 대부분의 개발자가 클래스 안의 뒷단 필드에 직접 접근해서<br />
그 값을 수정하곤 했다. 하지만 이렇게 하면 데이터 검증과 오류 확인 등의 코드가 파일 전체에<br />
흩어져 여러 번 나타날 수밖에 없다. 반면, 암묵적 속성을 활용하면 뒷단 필드의 값을 변경하기<br />
위해서 반드시 속성 접근자(대부분 private)를 사용해야 하므로, 속성 접근자를 명시적으로<br />
구현하면서 그 내부에 검증 코드를 추가하면 이러한 단점을 극복할 수 있다.<br />
28 <strong>모어</strong> <strong>이펙티브</strong> <strong>C#</strong>