Computer >> 컴퓨터 >  >> 프로그램 작성 >> C#

C#에서 Func 대리자와 Action 대리자의 차이점은 무엇입니까?

<시간/>

대리자는 특정 매개 변수 목록 및 반환 형식이 있는 메서드에 대한 참조를 나타내는 형식입니다. 대리자를 인스턴스화할 때 해당 인스턴스를 호환 가능한 서명 및 반환 유형이 있는 모든 메서드와 연결할 수 있습니다. 대리자 인스턴스를 통해 메서드를 호출(또는 호출)할 수 있습니다.

펑크 델리게이트

Func는 System 네임스페이스에 포함된 일반 대리자입니다. 0개 이상의 입력 매개변수와 하나의 출력 매개변수가 있습니다. 마지막 매개변수는 out 매개변수로 간주됩니다. 이 대리자는 최대 16개의 매개 변수를 사용하고 값을 반환하는 메서드를 가리킬 수 있습니다.

아래는 두 개의 입력과 출력 매개변수가 있는 Func 대리자입니다.

함수<문자열, 문자열, 문자열> 추가;

예시

using System;
namespace DemoApplication {
   class Program {
      static void Main(string[] args) {
         Func<string, string, string> func = Append;
         string fullName = func("Michael", "Jackson");
         Console.WriteLine(fullName);
         Console.ReadLine();
      }
      static string Append(string firstName, string lastName) {
         return firstName + lastName;
      }
   }
}

출력

MichaelJackson

행동 대리인

Action은 System 네임스페이스에 정의된 대리자 형식입니다. Action 형식 대리자는 Action 대리자가 값을 반환하지 않는다는 점을 제외하고 Func 대리자와 동일합니다. 즉, 반환 형식이 void인 메서드와 함께 Action 대리자를 사용할 수 있습니다. 최소 1개에서 최대 16개의 입력 매개변수를 포함할 수 있으며 출력 매개변수는 포함하지 않습니다.

아래는 두 개의 입력과 출력 매개변수가 있는 Func 대리자입니다.

함수<문자열, 문자열,> 인쇄,

예시

using System;
namespace DemoApplication {
   class Program {
      static void Main(string[] args) {
         Action func = AppendPrint;
         func("Michael", "Jackson");
         Console.ReadLine();
      }
      static void AppendPrint(string firstName, string lastName) {
         string fullName = firstName + lastName;
         Console.WriteLine($"{fullName}");
      }
   }
}

출력

위 코드의 출력은

MichaelJackson