C#에서 매개 변수로 함수 전달

Muhammad Maisam Abbas 2024년2월16일
  1. C#에서Func<>대리자를 사용하여 함수를 매개 변수로 전달
  2. C#에서Action<>대리자를 사용하여 함수를 다른 함수 내에서 매개 변수로 전달
C#에서 매개 변수로 함수 전달

이 자습서에서는 C#의 다른 함수 내에서 함수를 매개 변수로 전달하는 메서드를 소개합니다.

C#에서Func<>대리자를 사용하여 함수를 매개 변수로 전달

Func<T1, T-return> 대리자는 C#에서T1 매개 변수와T-return 반환 유형을 사용하여 함수를 정의합니다. Func<T1, t-return>델리게이트를 사용하여 다른 함수 내에서 함수를 매개 변수로 전달할 수 있습니다. 다음 코드 예제는 C#에서Func<>델리게이트를 사용하여 다른 함수 내에서 함수를 매개 변수로 전달하는 방법을 보여줍니다.

using System;

namespace pass_function_as_parameter {
  class Program {
    static int functionToPass(int x) {
      return x + 10;
    }
    static void function(Func<int, int> functionToPass) {
      int i = functionToPass(22);
      Console.WriteLine("i = {0}", i);
    }
    static void Main(string[] args) {
      function(functionToPass);
    }
  }
}

출력:

i = 32

정수 값을 매개 변수로 취하고이를10으로 증가시키고 결과를 정수 값으로 리턴하는 함수functionToPass(int x)를 정의했습니다. Func<int, int>델리게이트를 사용하여functionToPass()함수를function()함수에 매개 변수로 전달했습니다. function()함수 내의functionToPass()함수에22값을 전달했습니다. 메인 함수에서function(functionToPass)함수 호출로 함수를 호출했습니다. Func<>델리게이트는 일부 값을 반환하는 함수를 전달하는 데만 사용할 수 있습니다.

C#에서Action<>대리자를 사용하여 함수를 다른 함수 내에서 매개 변수로 전달

값을 반환하지 않는 함수를 전달하려면 C#에서Action<>대리자를 사용해야합니다. Action<T>델리게이트는 함수 델리게이트처럼 작동합니다. T매개 변수로 함수를 정의하는 데 사용됩니다. Action<>델리게이트를 사용하여 함수를 매개 변수로 다른 함수에 전달할 수 있습니다. 다음 코드 예제는 C#에서Action<>델리게이트를 사용하여 다른 함수 내에서 함수를 매개 변수로 전달하는 방법을 보여줍니다.

using System;

namespace pass_function_as_parameter {
  class Program {
    static void functionToPass2(int x) {
      int increment = x + 10;
      Console.WriteLine("increment = {0}", increment);
    }
    static void function2(Action<int> functionToPass2) {
      functionToPass2(22);
    }
    static void Main(string[] args) {
      function2(functionToPass2);
    }
  }
}

출력:

increment = 32

정수 값을 매개 변수로 취하고이를10으로 증가시키고 결과를 인쇄하는 함수functionToPass2(int x)를 정의했습니다. Action<int>델리게이트를 사용하여functionToPass2()함수를function()함수에 매개 변수로 전달했습니다. function2()함수 내의functionToPass2()함수에22값을 전달했습니다. 메인 함수에서function2(functionToPass2)함수 호출로 함수를 호출했습니다. Action<>델리게이트는 값을 반환하지 않는 함수를 전달하는 데만 사용할 수 있습니다.

Muhammad Maisam Abbas avatar Muhammad Maisam Abbas avatar

Maisam is a highly skilled and motivated Data Scientist. He has over 4 years of experience with Python programming language. He loves solving complex problems and sharing his results on the internet.

LinkedIn

관련 문장 - Csharp Function