-
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을 소문자로 변환한 것이 같으면 참을 반환하고 다르면 거짓을 반환하는 함수 생성.
'C# 예제 공부일기' 카테고리의 다른 글
LINQ의 기초 (0) 2020.07.28 List<T> 에서 Predicate<T> 델리게이트 활용 (0) 2020.07.28 람다식(Lambda Expression) (0) 2020.07.22 Func와 Action으로 델리게이트를 더 간단히 만들기 (0) 2020.07.22 이름 없는 델리게이트(Anonymous Delegate) (0) 2020.07.22