language:csharp:함수포인터
차이
문서의 선택한 두 판 사이의 차이를 보여줍니다.
양쪽 이전 판이전 판 | |||
language:csharp:함수포인터 [2013/07/12 12:08] – kieuns | language:csharp:함수포인터 [2024/04/23 22:44] (현재) – 바깥 편집 127.0.0.1 | ||
---|---|---|---|
줄 1: | 줄 1: | ||
+ | 델리게이트를 함수 포인터처럼 응용 | ||
+ | 한번만 실행되는 코드들이 있을 경우 델리게이트를 사용해서 **한번만 호출될 함수**와 **계속 사용될 함수**를 설정한다. | ||
+ | |||
+ | 한번만 사용될 코드가, 자주 호출 되는 함수에 같이 포함된 것을 제거하고 나면 기분은 깔끔해짐. | ||
+ | |||
+ | <code csharp> | ||
+ | c# delegate | ||
+ | ( C++ 함수 포인터처럼 ) | ||
+ | |||
+ | namespace DelegateTest | ||
+ | { | ||
+ | // 함수 포인터로 사용할 델리게이트 | ||
+ | private delegate void methodEveryTimeCalled(); | ||
+ | |||
+ | //한번만 실행하는 함수. 이 함수에서 다음부터 계속 호출될 함수를 설정한다. | ||
+ | private void onetimeCallMethod() { | ||
+ | methodEveryTimeCalled = new methodEveryTimeCalled( this.realEveryCallMethod ); | ||
+ | } | ||
+ | // onetimeCallMethod() 이후부터는 이 함수가 계속 실행된다. | ||
+ | private void realEveryCallMethod() { } | ||
+ | |||
+ | void Awake() { | ||
+ | methodEveryTimeCalled = new methodEveryTimeCalled( this.onetimeCallMethod ); | ||
+ | } | ||
+ | | ||
+ | void Update() { | ||
+ | methodEveryTimeCalled(); | ||
+ | } | ||
+ | } | ||
+ | </ |