|
개인 일일 결과물 |
조 : 3조 |
작성자 : 황광진 | |
작성일 : 2010년 11월 3일 |
속성
인자 없는 속성
보통 객체의 상태 정보를 저장 할 때 다음과 같은 방법으로 읽거나 수정하는 것이 가능 할 것이다.
public sealed class Employee { public String Name; public String Age; }
Employee e = new Employee(); e.Name = “Hwang Kwang-Jin”; //이름 설정 e.Age = 25; //나이 설정 Console.WriteLine(e.Name); //Hwang Kwang-Jin이 출력됨 |
보통 이러한 경우로 설정하는데 이 방법은 올바른 방법이 아니다.
필드가 public으로 노출되면 필드의 값을 부적절하게 설정하여 객체의 상태가 쉽게 불안정해질 수 있기 때문이다. 다음과 같은 방법으로 코드를 쉽게 불안정하게 만들수 있다.
e.Age = -100; // 나이가 -100이 될 수는 없을 것이다.
어찌됫든, 이러한 public 속성을 private으로 변경해 주어야 한다.
public sealed class Employee { private string m_Name; private int m_Age;
public string Name { get { return m_Name; } set { m_Name = value; } // value는 항상 새로운 값을 식별한다. }
public int Age { get { return m_Age; } set { if (value < 0) { throw new ArgumentOutOfRangeException("value", value.ToString(), "The value must be greater than or equal to 0"); } m_Age = value; } }
|
위와 같은 예제로 속성을 사용하면 코드는 간결해지며 필드값은 private로 설정을 해줌으로써 안전성도 제공 할 수 있다.
C# 언어는 기본적으로 “속성” 기능을 통해 set 혹은 get 하는 코드를 만나게 되면, 컴파일러는 이에 해당하는 실제 메서드를 호출하는 코드를 생성해 준다.
e.Name = “Hwang Kwang Jin”; String EmployeeName = e.Name; e.Age = 25; e.Age = -50; int EmployeeAge = e.Age; |
속성을 정의하게 되면 get과 set을 동시에 구현한다.