English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

C# Action 대리자

Action는 System 네임스페이스에서 정의된 대리자 유형입니다. Action 유형 대리자는 Func 대리자와 같지만, Action 대리자는 반환 값이 없습니다. 다시 말해, Action 대리자는 void 반환 유형의 메서드와 함께 사용할 수 있습니다.

Action 일반화된 대리자는 무엇인가요?

Action<T>는 .NET Framework에 내장된 일반화된 대리자입니다. Action<T> 대리자를 사용하여 메서드를 매개변수로 전달할 수 있으며, 사용자 정의 대리자를 명시적으로 선언하지 않아도 됩니다. 포장된 메서드는 이 대리자 정의의 메서드 서명과 일치해야 합니다. 다시 말해, 포장된 메서드는 매개변수를 값 전달로 받아야 하며, 반환 값이 없어야 합니다.

예를 들어, 다음 대리자는 int 값을 출력합니다.

public delegate void Print(int val);
static void ConsolePrint(int i)
{
    Console.WriteLine(i);
{
static void Main(string[] args)
{           
    Print prnt = ConsolePrint;
    prnt(10);
{
출력:
10

Action 대리자를 사용하여 위에 정의된 Print 대리자 대신 사용할 수 있습니다. 예를 들어:

static void ConsolePrint(int i)
{
    Console.WriteLine(i);
{
static void Main(string[] args)
{
    Action<int> printActionDel = ConsolePrint;
    printActionDel(10);
{

new 키워드를 사용하거나 메서드를 직접 할당하여 Action 대리자를 초기화할 수 있습니다:

Action<int> printActionDel = ConsolePrint;
//또는
Action<int> printActionDel = new Action<int>(ConsolePrint);

Action 대리자는 최대16다른 타입의 입력 매개변수를 가질 수 있습니다.

Action 대리자와 익명 메서드

익명 메서드를 Action 대리자에 할당할 수도 있습니다. 예를 들어:

static void Main(string[] args)
{
    Action<int> printActionDel = delegate(int i)
                                {
                                    Console.WriteLine(i);
                                };
    printActionDel(10);
{
출력:
10

Action 대리자와 Lambda 표현식

Lambda 표현식도 Action 대리자와 함께 사용될 수 있습니다:

static void Main(string[] args)
{
    Action<int> printActionDel = i => Console.WriteLine(i);
       
    printActionDel(10);
{

따라서, Action 대리자 타입 반환 값을 사용하지 않는 어떤 메서드든 사용할 수 있습니다.

Action 대리자 사용 예제 설명

  • Action 대리자는 최소 0개, 최대16매개변수가 있고 반환 값이 없습니다.

  • Action은 매개변수가 없고 반환 값이 없는 대리자입니다.

  • Action<int, string>은 입력 매개변수 int, string를 가지고 반환 값이 없는 대리자입니다.

  • Action<int, string, bool>은 입력 매개변수 int, string, bool를 가지고 반환 값이 없는 대리자입니다.

  • Action<int, int, int, int>은 입력이 있음을 의미합니다.4int형 파라미터가 1개이고 반환 값이 없는 대리자입니다.

Action 및 Func 대리자의 장점

  1. 대리자를 쉽게 빠르게 정의할 수 있습니다.

  2. 코드를 간결하게 만듭니다.

  3. 전체 애플리케이션에서 호환되는 타입.

기억해야 할 주요 사항

  1. Action 대리자는 Func 대리자와 동일하지만, Action 대리자는 어떤 내용도 반환하지 않습니다. 반환 타입은 void여야 합니다.

  2. Action 대리자는 0개에서16입력 파라미터가 1개입니다。

  3. Action 대리자는 익명 메서드나 람다 표현식과 함께 사용할 수 있습니다。