language:csharp:함수포인터
차이
문서의 선택한 두 판 사이의 차이를 보여줍니다.
| 다음 판 | 이전 판 | ||
| language:csharp:함수포인터 [2013/01/24 14:32] – 바깥 편집기 127.0.0.1 | 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(); | ||
| + | } | ||
| + | } | ||
| + | </ | ||