라벨이 익명 함수인 게시물 표시

C# Action과 람다식: 반환값 없는 콜백을 작성하는 방법

이미지
C# Action 델리게이트와 람다식을 연결하는 방법을 설명합니다. 오래된 예제의 의미는 살리되 현재 기준에서 잘못 적용하기 쉬운 부분을 함께 고쳤어요. 아래 순서대로 확인하면 단순한 화면 복사보다 실제 판단에 도움이 됩니다. Action은 반환값 없는 메서드나 람다식을 참조할 때 사용하는 기본 제공 델리게이트입니다. Action은 void 반환 콜백을 표현한다 Action 은 실행할 코드를 값처럼 전달하되 반환값이 필요하지 않을 때 사용합니다. 인수가 없으면 Action, 인수가 있으면 Action<T> 처럼 형식을 지정해요. Action<string, int> repeat = (text, count) => { for (int i = 0; i < count; i++) Console.WriteLine(text); }; repeat("안녕하세요", 2); 람다식의 매개변수 개수와 형식은 Action 선언과 맞아야 합니다. 값을 반환하려면 Action이 아니라 Func를 선택해야 해요. 한 식과 여러 문장 람다를 구분한다 한 문장으로 끝나는 경우 message => Console.WriteLine(message) 처럼 중괄호를 생략할 수 있습니다. 조건문이나 반복문처럼 여러 문장이 필요하면 블록 람다를 사용해요. 코드를 줄이는 것보다 호출 목적이 한눈에 보이는지가 더 중요합니다. 같은 람다가 여러 곳에서 반복되거나 테스트가 필요하면 이름 있는 메서드로 옮기세요. Action 변수에는 그 메서드 그룹을 그대로 대입할 수 있어 간결함을 잃지 않습니다. async void 형태의 Action은 신중하게 쓴다 Action은 반환 형식이 void이므로 async 람다를 대입하면 async void 가 될 수 있습니다. 호출자가 완료를 기다리거나 예외를 정상적으로 받을 수 없어 이벤트 처리기가 아닌 일반 비동기 작업에서는 위험해요. 비동기 콜백은 가능하면 Func<Task...