ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Predicate<T> 델리게이트
    C# 예제 공부일기 2020. 7. 28. 18:53

    Predicate<T> 는 Func나 Action과 같은 미리 정의된 델리게이트 형식이다. Predicate 델리게이트 메소드는 하나의 매개변수를 갖고 리턴 값이 bool인 델리게이트이다.

     

    predicate<int> isEven = IsEven;
    
    static bool IsEven(int n)
    {
    	return n%2==0;
    }
    

     predicate<int> isEven은 매개변수가 정수 하나이고 리턴 값이 bool인 IsEven메소드의 이름을 지정한다. 여기서 Predicate isEven은 소문자로 시작하고 메소드 IsEven은 대문자로 시작하는 것에 주의하자, 따라서 isEven Predicate를 사용해서 IsEven 메소드를 호출할 수 있다.

     

    Console.WriteLine(isEven(6)) //결과 : true

    여기서 Predicate 대신 Func<int,bool> isEven=IsEven 을 써도 Predicate는 리턴값이 bool로 정해져 있으므로 같은 결과가 나온다. IsEven(int n) 메소드를 람다식으로 변형하면 다음과 같이 한 줄로 쓸 수 있다.

    static bool IsEven(int n)=>n%2==0;

    또 IsEven() 메소드를 익명 델리게이트로 쓴다면 함수를 정의하지 않고, Predicate 선언 부분에 직접 쓸 수도 있다.

    Predicate<int> isEven = n => n%2==0;

     

     

    코드를 보면 정말 간단하다. (람다식 사용)

    class Program
        {
            static void Main(string[] args)
            {
                Predicate<int> isEven = n => n%2==0; //n이 짝수라면 true를 반환하는 메서드
                Console.WriteLine(isEven(6)); //결과 True
    
                Predicate<string> isLowercase = n => n.Equals(n.ToLower());
                Console.WriteLine(isLowercase("is lower case?")); //결과 True
                Console.WriteLine(isLowercase("Is Lower case?")); //결과 False
    
    
            }
            
        }

    문자열 n과 문자열 n을 소문자로 변환한 것이 같으면 참을 반환하고 다르면 거짓을 반환하는 함수 생성.

Designed by Tistory.