더북(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에 굉장히 많이 적용되어 있기에 프로그래밍을 계속 학습하다 보면 많이 접하게 됩니다.