닷넷에서 프로퍼티

현재 페이지를 로딩중입니다.
만약 페이지 로딩이 끝났는데 본문이 보이지 않는다면
광고차단 플러그인 때문이니 잠시 플러그인을 꺼주시면 감사하겠습니다.

The current page is loading.
If the page loading is over but the text is not visible
This is because of the ad blocking plugin, so please be sure to turn off the plugin for a while.

요즘 닷넷 코딩에 대해 책을 읽고 있는데.
요 부분 보면서 이해가 되질 않았다.

객체지향에서 데이터 멤버에 직접 접근해서 작업을 하는게 좋지 않다 라는 원칙이 있는데.
어째서 이건 그 작업을 할려고 있는거란 말인건가.

뭐 클래스로 Private 속성 멤버변수를 만들어 놓았더니 그 멤버 변수 포인터 값을 넘기는 외부로
넘겨서 작업하게 만드는 사람도 봐서 그다지 놀랍지도 않지만 -_-;;

.NET 프레임 워크에서 제공하는 프로퍼티를 사용하면 사용자는 마치 멤버변수에 직접 대입해서
쓰는거 처럼 보이지만 실제로는 get/set 함수에 자동으로 연결해서 작업하게 하는것이다.

Managed C++에서는 두가지 프로퍼티가 존재한다고 한다.
scalar와 indexed

scalar
는 get/set 함수를 사용하여 값에 접근하는 방식이고

__gc class Human{
	int age;

	public:
	__property int get_age(){return age;}
	__property int set_age(int n){age = n;}
}

int _tmain(void)
{
	Human * pMan = new Human();
	pMan->age = 18;
}

이런 식으로 사용한다.

indexed는 배열의 []를 사용하는거랑 거의 흡사하다.
내용은 위의 scalar 프로퍼티와 비슷하지만

__gc class Bank{
	int acount[100];    //예를 들기 위한거니 태클걸지 마쇼

	public:
	__property int get_acount(long n){return acount[n];}
}

int _tmain(void){
	Bank * pB = new Bank();
	int ac =  pB->acount[3];
}

뭐 대략 이렇게 쓴다.
개념은 대충 이렇게 돌아가더군.
실제 돌리면 뱅크 어카운트에 암것도 쓰지 않았으니 쓰레기 값이 나올지 모르겠군.

크리에이티브 커먼즈 라이선스 Linsoo의 저작물인 이 저작물은(는)크리에이티브 커먼즈 저작자표시-동일조건변경허락 4.0 국제 라이선스에 따라 이용할 수 있습니다.

댓글 남기기

이메일은 공개되지 않습니다.

This site uses Akismet to reduce spam. Learn how your comment data is processed.