Auto Property
Property
- 정보은닉을 더 간결하고 간단하게 구현하도록 허용
- get / set 메서드를 대신해 가독성을 보완
// MyClass 원형
class MyClass
{
private string name;
public string GetName() {return name;}
public void SetName(string name) {this.name = name;}
}
// Property 사용
class MyClass
{
private string name;
public string Name {
get { return name; }
set { name = value;}
}
}
// 자동 Property 사용
class MyClass
{
public string Name { get; set; }
}
// 클래스 외부에서 접근할 시 set 불가능
class MyClass
{
public string Name { get; private set; }
}
// 초기화
class MyClass
{
public string Name { get; set; } = "MyName";
}
// set 메서드 조건 추가
class MyClass
{
public int day
{
get { return day; }
set { if (1 <= value && value <= 31) day = value; }
}
}
public 필드와의 차이
public class myint
{
public int value{get;set;}
}
public class myint
{
public int value;
}
- 사실 상기 두 클래스의 기능적 차이는 없음
-
get/set에 대해 property 보다 더 제한된 aceess level을 부여하는 것만 가능
// error! private int maxTime { public get; public set; } // ok public int maxTime { get; private set; }
- property에 접근하는 데 더 많은 overhead가 발생
- 자동 프로퍼티는 .Net 프레임워크에서 데이터 바인딩에 많이 사용
- Reflection 사용 시 다르게 작동