C #에서 Action, Func 및 Predicate 대리자를 사용하는 방법

대리자는 대리자의 서명과 동일한 서명이있는 메서드를 참조 할 수있는 형식이 안전한 함수 포인터입니다. 델리게이트는 콜백 메소드를 정의하고 이벤트 처리를 구현하는 데 사용되며 "delegate"키워드를 사용하여 선언됩니다. 자체적으로 표시되거나 클래스 내부에 중첩 될 수있는 대리자를 선언 할 수 있습니다.

Func 및 Action 델리게이트는 무엇입니까? 어떻게 사용할 수 있습니까?

Func 대리자와 Action 대리자의 기본적인 차이점은 전자가 값을 반환하는 대리자에 사용되는 반면 후자는 반환 값이없는 대리자에 사용할 수 있다는 것입니다.

Func는 하나 이상의 인수를 받아들이고 값을 반환하는 메서드를 가리키는 대리자입니다. Action은 하나 이상의 인수를 받아들이지 만 값을 반환하지 않는 메서드를 가리키는 대리자입니다. 즉, 대리자가 void를 반환하는 메서드를 가리킬 때 Action을 사용해야합니다.

술어는 하나 이상의 일반 매개 변수를 받아들이고 부울 값을 반환하는 대리자입니다. Func와 같은 것으로 가정 할 수 있습니다. 조건 자 위임은 일반적으로 일련의 기준에 따라 일부 데이터에 대한 검색 작업을 수행하는 데 사용됩니다.

C #의 프로그래밍 작업 대리자

C #의 대리자를 활용하여 이벤트를 구현하고 메서드를 콜백 할 수 있습니다. C #의 대리자는 C ++의 함수 포인터와 유사하지만 C # 대리자는 형식에 안전합니다. 대리자가 메서드를 가리 키도록하려면 메서드를 대리자에 매개 변수로 전달할 수 있습니다.

다음 코드 조각은 Action 대리자를 사용하기위한 구문을 보여줍니다.

동작

다음 코드 목록은 Action delegate를 사용하는 방법을 보여줍니다. 이 코드 조각이 실행되면 "Hello !!!"라는 단어가 인쇄됩니다. 콘솔 창에서.

static void Main (string [] args)

        {

            액션 액션 = new Action (Display);

            action ( "안녕하세요 !!!");

            Console.Read ();

        }

static void Display (문자열 메시지)

        {

            Console.WriteLine (메시지);

        }

C #에서 Func 대리자 프로그래밍

이제 C #에서 Func 델리게이트로 작업하는 방법을 이해하겠습니다. 다음은 Func 대리자의 구문입니다.

기능

다음 코드 조각은 C #에서 Func 대리자를 사용하는 방법을 보여줍니다. Hra 값 (기본급의 40 %로 계산)을 인쇄합니다. 기본 급여는 인수로 전달됩니다.

static void Main (string [] args)

        {

            Func func = new Func (CalculateHra);

            Console.WriteLine (func (50000));

            Console.Read ();

        }

        static double CalculateHra (int 기본)

        {

            return (double) (basic * .4);

        }

앞서 제공된 코드 조각에서 Func 대리자의 선언에있는 두 번째 매개 변수는 대리자가 가리키는 메서드의 반환 형식을 나타냅니다. 이 예에서 계산 된 Hra 값은 double로 반환됩니다.

C #에서 조건 자 대리자 프로그래밍

조건 자 대리자는 일반적으로 컬렉션 또는 데이터 집합의 항목을 검색하는 데 사용됩니다. 다음은 Predicate 델리게이트의 구문입니다.

술부

Predicate는 기본적으로 Func와 동일합니다.

Customer라는 다음 엔티티 클래스를 고려하십시오.

클래스 고객

    {

        public int Id {get; 세트; }

        public string FirstName {get; 세트; }

        public string LastName {get; 세트; }

        공개 문자열 주소 {get; 세트; }

        public string City {get; 세트; }

        public string State {get; 세트; }

        public string Country {get; 세트; }

    }

다음으로 고객 목록을 만들고 Customer 유형의 개체를 여기에 저장합니다.

 목록 custList = new List ();

            custList.Add (new Customer {Id = 1, FirstName = "Joydip", LastName = "Kanjilal", State = "Telengana", City = "Hyderabad", 주소 = "Begumpet", 국가 = "India"});

            custList.Add (new Customer {Id = 2, FirstName = "Steve", LastName = "Jones", State = "OA", City = "New York", Address = "Lake Avenue", Country = "US"}) ;

다음은 Predicate 델리게이트를 사용하여 데이터를 검색하는 방법을 보여주는 전체 코드 목록입니다.

static void Main (string [] args)

        {

            목록 custList = new List ();

            custList.Add (new Customer {Id = 1, FirstName = "Joydip", LastName = "Kanjilal", State = "Telengana", City = "Hyderabad", 주소 = "Begumpet", 국가 = "India"});

            custList.Add (new Customer {Id = 2, FirstName = "Steve", LastName = "Jones", State = "OA", City = "New York", Address = "Lake Avenue", Country = "US"}) ;

            술어 hydCustomers = x => x.Id == 1;

            고객 고객 = custList.Find (hydCustomers);

            Console.WriteLine (customer.FirstName);

            Console.Read ();

        }

위의 코드 조각이 실행되면 콘솔 창에 "Joydip"이라는 이름이 표시됩니다.

C #에서 더 많은 작업을 수행하는 방법 :

  • C #에서 추상 클래스와 인터페이스를 사용하는 경우
  • C #에서 AutoMapper를 사용하는 방법
  • C #에서 람다 식을 사용하는 방법
  • C #에서 Action, Func 및 Predicate 대리자를 사용하는 방법
  • C #에서 대리자를 사용하는 방법
  • C #에서 간단한 로거를 구현하는 방법
  • C #에서 특성을 사용하는 방법
  • C #에서 log4net으로 작업하는 방법
  • C #에서 리포지토리 디자인 패턴을 구현하는 방법
  • C #에서 리플렉션을 사용하는 방법
  • C #에서 filesystemwatcher로 작업하는 방법
  • C #에서 지연 초기화를 수행하는 방법
  • C #에서 MSMQ를 사용하는 방법
  • C #에서 확장 메서드를 사용하는 방법
  • C #에서 람다 식 사용 방법
  • C #에서 volatile 키워드를 사용하는 경우
  • C #에서 yield 키워드를 사용하는 방법
  • C #에서 다형성을 구현하는 방법
  • C #에서 자신 만의 작업 스케줄러를 빌드하는 방법
  • C #에서 RabbitMQ로 작업하는 방법
  • C #에서 튜플을 사용하는 방법
  • C #에서 가상 및 추상 메서드 탐색