Workspace/C#
[C# 7.0] 로컬 함수
Bombus
2023. 4. 17. 09:49
C# 7.0에 로컬 함수란 것이 추가되었다.
메서드 내의 메서드로 중첩된 형식이다.
로컬 함수를 포함하는 메서드내에서만 호출할 수 있기 때문에
실수로 메서드를 호출되는 상황 등을 방지할 수 있고, 코드의 의도를 명확하게 한다.
| 사용방법
public class Foo
{
public void DoBar() {
int foobar = 1;
DoTask().Forget();
// 로컬 함수
async UniTask DoTask() {
foobar++;
await DoSome(foobar);
}
}
}
위와 같이 메서드 내에 정의하고 보통의 메서드처럼 호출해서 사용하면 된다.
| 제약
로컬 함수는 아래에서 선언하고 호출할 수 있다.
- 메서드, 반복기 메서드 / 비동기 메서드
- 생성자
- 속성 접근자
- 이벤트 접근자
- 무명 메서드
- 람다 식
- 종료자(소멸자)
- 다른 로컬 함수
그리고 아래의 한정자를 사용할 수 있다.
- async
- unsafe
- static (단, 지역 변수나 인스턴스 상태를 캡처할 수 없음)
- extern
로컬 함수 캡처나, Action, Func, delegate 형식에 대입도 되는 것 같다.
자세한 내용은 공식문서를 참고하시라.
| 참고
반응형