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