'Delegate'에 해당되는 글 1건

  1. 2009.02.07 도대체 Delegate가 뭘까?
VB.NET2009.02.07 20:58
이글 내용은 http://www.codeproject.com/vb/net/Delegate.asp 에서

발췌하여 번역 및 수정하였습니다.



delegate란?

포인터의 개념과 아주 유사한데요, C나 C++의 함수포인터 또는 typedef 문이랑 매우 비슷한

개념입니다. C/C++ 에 비유하자면 함수가 위치한 메모리 주소를 일컫지만 단지

주소을 알고 있을뿐 다른 부가적인 정보를 가지고 있지 않습니다.

이때문에 C/C++에선 잘 쓰면 포인터가 아주 유용하지만 그렇지 않을경우

(파라메타를 잘못 전달 하였을 경우) 심각한 오류를 일으킬수 있습니다.

예전부터 함수 포인터를 호출하는건 지원하는 랭귀지에 많이 의존해 왔죠

포인터는 본질적으로 위험하다고 많이 얘기합니다.

하지만 Delegate는 .NET의 CLR 안에서는 Type-Safe 메커니즘을 제공하여 C/C++의 포인터와 같은

역할을 하면서도 안전하게 사용할 수 있습니다.

그런데 왜 포인터를 쓸까요?

제가 요즘에 여러가지를 배우고 있는데요, 포인터를 쓴다는건 메모리 주소를 바로 찍는다는겁니다.

예를 들어 함수를 하나 호출하려고 하는데, 어디 있는지 모르면 찾아야 겠죠?

그치만 포인터는 함수가 어디에 위치 해 있는지 그 주소를 바로 찍어주기땜에 빠르다는거죠

참고로 이러한 방법을 컴퓨터구조학에선는 인덱스 어드레싱 이라고 합니다.(비슷한 개념)

또, 찾아보니깐.. 포인터를 게임 개발, 암호화, 알고리즘 에 많이 쓰더군요 ㅋ

닷넷이나 자바에서는 포인터랑 비슷한 delegate를 주로 다중쓰레드 처리할때 많이 쓰고요

결국 약간의 성능을 높이고자 쓰는것 같습니다. 저는 잘 안쓸것 같네요 ㅋ


말보단 코드로 이해하는게 빠르겠죠? ^^;

그냥 간단한 콘솔용 인사말입니다.



delegate를 선언하는 방법은 아래와 같습니다.




실제 가져다 쓸 메소드 두개를 작성합니다.


그리고 sub main() 프로시저에 다음 코드를 넣고요

delegate를 쓰기위해선 첨에는 invoke 메소드를 호출해야 하는데요 아랬줄에 이 코드를 넣고요


이것 까지.. ^^;

놀랍지 않으세요? 엇? 근데 invoke메소드가 빠진게 아니냐구요?

아니에요, 인스턴스 선언할때 이미 지정 했습니다.


아래코드는 전체적인 코드 입니다.

이 글은 비베따위를(http://www.mhvb.net) 에서도 볼수 있습니다.
저작자 표시 동일 조건 변경 허락
신고
Posted by dotnetpower

티스토리 툴바