C# 프로퍼티
Property 클래스의 메쏘드를 멤버 변수처럼 접근할 수 있게 한다.
(그러나 실제로는 메쏘드 이다)
일반적으로 객체 지향의 캡슐화 개념에서 클래스의 멤버 변수는 외부에서 직접 접근 및 변경을 허용하지 않도록 한다.
따라서 변수에 대한 접근과 변경은 별도로 노출한 공개 메쏘드를 통해서 이루어 지도록 한다.
이 공개된 메쏘드는 변수에 대한 사용자의 요청(접근 or 변경) 사이에 특정한 비지니스 로직을 포함하여
변수 값에 대한 투명성과 보안성을 강화 하기도 한다.
이러한 메쏘드를 갯터 , 셋터 라고 부른다.
* 프로퍼티 정의
public int Personid
{
get
{
return id;
}
set
{
id=value;
}
}
* 프로퍼티 사용예
Console.WriteLine("{0},{1}, {2}",room[i].Personid, room[i].Personname , room[i].Personage);
* 프로퍼티의 특징
1. 논리적인 멤버 변수
사용하는 입장에서는 단순히 변수처럼 값을 읽어오거나 셋팅하지만 프로퍼티 내부적으로 어떠한 비지니스 로직을 가질 수 있다.
(일반적인 메쏘드가 그러하듯이..)
즉 사용자가 입력한 값 그대로가 저장,호출 되는 것이 아니라 특정한 로직으로 필터링 혹은 가공된 데이터가 저장,호출될 수 있게 한다.
2. 접근과 변경(갯터,셋터)를 동일한 이름으로 사용 가능케 한다
메쏘드는 한 클래스 내에서 동일한 이름이 될 수 없다(오버로딩 말고)
그러나 프로퍼티를 사용하면 변수에 대한 읽기,쓰기를 동일한 이름의 프로퍼티를 통해서 수행할 수 있게 한다(변수처럼..)
3. static 프로퍼티도 생성 가능하다
4. 프로퍼티는 실제로 변수가 아니다.
프로퍼티는 결국 메쏘드 인 것이다. 따라서 변수처럼 메모리 주소를 가질 수 없다. 즉 클래스의 인스턴스가 생성될때 메모리에 올라가지 않는다.
따라서 주소값을 기반으로 하는 ref,out 키워드와 함께 인자로 사용될 수 없다
5. virtual,abstract,override 로 선언할 수 있다(일반적인 메쏘드와 동일하다)
6. void 형이 될 수 없다. (메쏘드와의 차이점)
자료출처 http://mkex.pe.kr