• [C#] 대리자와 delegate, Action, Func
    프로그래밍/C# + Unity 2024. 2. 23. 12:50
    728x90

    대리자

    대리자는 특정 매개 변수 목록 및 반환 형식이 있는 메서드에 대한 참조를 나타내는 형식이다. 쉽게 설명하면, 대리자를 통해 함수를 매개 변수로 전달할 수 있다. 이는 콜백 함수와 같은 이벤트에서 사용한다는 점에서 C++의 함수 포인터와 유사하지만, 멤버 함수에 대해 완전히 개체 지향이라는 점에서 다르다.

     

    매개변수로는 상황에 따라 Action이나 Func를 사용한다. 매개 변수가 없으며 값을 반환하지 않는 경우에는 Action을 사용하고, 이외의 경우에는 모두 Func<TResult>를 사용한다.

     

    1. Action과 delegate를 사용하는 경우

    예를 들어 아래와 같은 경우를 볼 수 있다.

    using System;
    using System.Windows.Forms;
    
    public class Name {
       private string instanceName;
    
       public Name(string name) {
          this.instanceName = name;
       }
    
       public void DisplayToWindow() {
          MessageBox.Show(this.instanceName);
       }
    }
    
    public class testTestDelegate {
       public static void Main( {
          Name testName = new Name("Koani");
          Action showMethod = testName.DisplayToWindow;
          showMethod();
          
          Action showMethod2 = delegate() { testName.DisplayToWindow();} ;
          showMethod2();
       }
    }

     

    2. Func과 delegate를 사용하는 경우

    예를 들어 아래와 같은 경우를 볼 수 있다.

    using System;
    using System.Windows.Forms;
    
    public class Name {
       private string instanceName;
    
       public Name(string name) {
          this.instanceName = name;
       }
    
       public string DisplayToWindow() {
          return this.instanceName;
       }
    }
    
    public class testTestDelegate {
       public static void Main( {
          Name testName = new Name("Koani");
          Func<string> showMethod = testName.DisplayToWindow;
          Console.WriteLine(showMethod());
          
          Func<string> showMethod2 = delegate() { return "Syudal"; };
          Console.WriteLine(showMethod2());
       }
    }

     


    728x90

    댓글

Copyright ⓒ syudal.tistory.com