더북(TheBook)

40.7 메서드의 매개변수로 메서드 전달하기

닷넷에 내장된 제네릭 대리자인 Func를 사용하면 메서드의 매개변수로 int, string 등 메서드 이름 자체를 지정해서 넘겨줄 수 있습니다.

메서드의 매개변수로 메서드 전달: PassMethodAsParameter.cs

using System;

class PassMethodAsParameter
{
    //① 입력한 문자열 길이를 반환하는 메서드
    static int StringLength(string data) => data.Length;

    //② 매개변수가 string이고 반환값이 int인 메서드를 매개변수로 받아 사용
    static void StringLengthPrint(Func<string, int> stringLength, string message)
        => Console.WriteLine($"메시지의 크기는 {stringLength(message)}입니다.");

    //ⓐ 메서드의 매개변수로 특정 메서드(StringLength) 전달
    static void Main() => StringLengthPrint(stringLength, "안녕하세요.");
}

실행 결과

메시지의 크기는 6입니다.

StringLength() 메서드를 StringLengthPrint() 메서드의 첫 번째 매개변수로 전달하는 예입니다. 의 첫 번째 매개변수에 메서드 이름을 지정하여 전달하는 것을 볼 수 있습니다.

이러한 형태의 프로그래밍은 학습할 때는 많이 사용하지 않으나, 닷넷 API에 굉장히 많이 적용되어 있기에 프로그래밍을 계속 학습하다 보면 많이 접하게 됩니다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.