관리 메뉴

IT 쟁이

C# 프로퍼티 본문

Microsoft(C#).NET

C# 프로퍼티

클라인STR 2008. 1. 16. 18:25

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

Comments