24.04.2019 Views

모어 이펙티브 C#(2판) - 맛보기

빌 와그너 저/김완섭 역 | 한빛미디어 | 2019년 05월 25,000원

빌 와그너 저/김완섭 역 | 한빛미디어 | 2019년 05월
25,000원

SHOW MORE
SHOW LESS

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>

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!