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