24.04.2019 Views

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

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

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

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

public class Customer<br />

{<br />

private string name;<br />

public string Name<br />

{<br />

get => name;<br />

set<br />

{<br />

if (string.IsNullOrWhitespace(value))<br />

throw new ArgumentException(<br />

"Name cannot be blank",<br />

}<br />

}<br />

name = value;<br />

}<br />

// 나머지 생략<br />

nameof(Name));<br />

만약 public 데이터 멤버를 사용했다면 전체 코드를 살펴보고, 고객 이름을 설정하는 코드를<br />

모두 찾아 수정해야 하는데, 코드를 수정하는 시간보다 수정해야 하는 코드를 찾느라 훨씬 많<br />

은 시간을 소비할 것이다.<br />

속성은 메서드로 구현되므로 멀티스레드도 쉽게 지원할 수 있다. get과 set 접근자에 동기화<br />

기능을 구현해주기만 하면 된다(아이템 39: XAML 환경에서의 스레드 간 호출을 이해하라 참조).<br />

public class Customer<br />

{<br />

private object syncHandle = new object();<br />

private string name;<br />

public string Name<br />

{<br />

get<br />

{<br />

lock (syncHandle)<br />

return name;<br />

}<br />

set<br />

{<br />

if (string.IsNullOrEmpty(value))<br />

throw new ArgumentException(<br />

1장 데이터 타입<br />

21

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

Saved successfully!

Ooh no, something went wrong!