본문 바로가기

프로그래밍/프로그래밍_여러가지

비주얼베이직.net - Delegate란?

반응형

비주얼베이직.net - Delegate란?

 

 

Delegate 의 사전적 의미는 '권한을 위임하다' 라는 뜻이다.

그렇다면 VisualBasic.net에서는 어떻게 쓰이는지 쉽게(우선 대충) 알아보자.

 

참고로 C언어에서의 포인터 개념을 알면 좀 더 쉽게 이해할 수 있을 것이다.

그렇지 않더라도 어렵지 않다.

 

 

.

.

그림과 같은 간단한 프로그램이 있다.

 

Button1을 클릭하면

Text창에 "Button1을 클릭하셨네요."가 뜬다.

 

 

다음으로 다음 동작을 위해

Text창을 비운다.

 

 

오른쪽 Button2 델리게이트 실행 버튼을 누르면 Button1을 누른 것과 똑같이 Text창에 "Button1을 클릭하셨네요."가 뜬다.

 

Button2가 직접 문장을 출력하지 않고 중간에 대리자를 세워 Button1 더러 대신 하라고 일을 시키는 것.

이것이 Delegate.

 

 

.

.

코드를 보며 구체적으로 알아보자.

 

 

 

먼저 1번 처럼 Test_Delegate를 델리게이트로 사용하겠다고 선언한다.

 

이 때, 2번 처럼 Test_Delegate의 매개변수를 실제 사용할 Button1 함수의 매개변수와 똑같이 맞춰준다.

 

그리고 3번 처럼 변수 선언하듯 델리게이트를 인스턴스화 한다.

사실 인스턴스화가 무슨 뜻인지는 아직 모르지만 변수 선언하듯 myDelegate를 Test_Delegate로서 선언해준다.

 

다음으로 4번 처럼 Button1 함수의 주소를 myDelgate에 넣어준다.

AddressOf 가 주소를 넣어주는 역할을 하는 것 같다.

 

마지막으로 5번 처럼 실행한다.

 

 

.

.

보통 Button2를 눌렀을 때 Button1처럼 동작하게 하려면

Button2에 TextBox.Text = "Button1을 클릭하셨네요." 출력 명령을 넣어줘야 한다.

 

하지만 델리게이트를 사용하면

Button2를 누르고서도 Button1이 일을 하게끔 만들 수 있다.

 

 

 

 

 

 

 

.

.

델리게이트 참고 링크

http://blog.daum.net/shksjy/100

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

반응형