속성 (property) 속성은 메서드를 소스 코드상에서 호출하는 방법을 단순하게 만들어준다. CLR은 흔히 속성이라고 이야기하는 매개변수 없는 속성과 매개변수가 있는 속성 (C#에서는 인덱서)를 지원한다. 매개변수 없는 속성 객체지향에서 중요한건 데이터 캡슐화이다. 클래스에서 정의한 필드가 외부에 노출되지 않도록 하여 필드의 상태 보호하는 것이다. 예를 들어, Person p = new Person(); p.Age = -1; //나이가 음수? 위와 같은 코드는 쉽게 필드의 상태를 훼손시킨다. 뿐만 아니라, 값을 캐쉬에 보관하거나, 내부 객체를 지연생성 하거나 쓰레드 안정적으로 접근해야 하는 경우에도 데이터 캡슐화를 하는게 중요할 수 있다. 따라서 타입을 설계할 때는 모든 필드를 가능한 private으로..