-
List<T> 에서 Predicate<T> 델리게이트 활용C# 예제 공부일기 2020. 7. 28. 19:15
Predicate<T> 델리게이트는 리턴 값이 반드시 bool이고 입력 파라미터가 하나인 델리게이트입니다. Predicate<T> 는 Array나 List클래스의 메소드들에서 자주 사용된다. 예를 들어 List<T> 클래스에서 Predicate<T>를 사용하는 메소드들은 다음과 같다.
리턴 타입 원형 설명 bool List<T>.Exists(Predicate<T>) 조건에 맞는 요소가 있는지 T List<T>.Find(Predicate<T>) 조건에 맞는 첫 번째 요소 리턴 List<T> List<T>.FindAll(Predicate<T>) 조건에 맞는 모든 요소 리턴 T List<T>.FindLast(Predicate<T>) 조건에 맞는 마지막 요소 리턴 int List<T>.RemoveAll(Predicate<T>) 조건에 맞는 요소를 모두 제거 bool List<T>.TrueForAll(Predicate<T>) 모든요소가 조건에 맞는지 여기서 Predicate<T> 는 람다식으로 표현된다.
static void Main(string[] args) { List<string> myList = new List<string> { "mouse","cow","tiger","rabbit","dragon","snake" }; bool n = myList.Exists(s => s.Contains("x")); Console.WriteLine("x를 포함하는 동물이 있나요? " + n); string name = myList.Find(s => s.Length == 3); Console.WriteLine("이름이 세글자인 첫번째 동물 : " + name); List<string> newList = myList.FindAll(s => s.Length > 5); Console.WriteLine("이름이 6글자 이상인 동물 :"); foreach (var item in newList) { Console.Write(item + " "); } Console.WriteLine(); List<string> newList2 = myList.ConvertAll(s => s.ToUpper()); Console.Write("대문자료 변환 :"); foreach(var item in newList2) { Console.Write(item + " "); } }
람다식으로 다 그때그때 정의해서 사용했다. 첫 번째 bool은 문자열 리스트 myList에 대하여 s.Contains(x)를 람다식을 이용하여 정의해서 x가 있다면 True를 반환하게 했다. 두번째는 이름이 세글자인 가장 첫 동물의 이름이 name에 저장되게된다. 문자열 s에 대해서 s.Length가 3이 되는 첫번째 동물이 cow이므로 cow가 저장된다. newList라는 리스트에 이름이 5글자 이상인 모든 요소를 newList에 저장한다. 마지막은 myList의 문자열을 s.ToUpper를 사용해서 모두 대문자로 변환한 결과가 newList2에 저장된다.
'C# 예제 공부일기' 카테고리의 다른 글
LINQ를 이용한 조건 검색과 정렬 (0) 2020.07.28 LINQ의 기초 (0) 2020.07.28 Predicate<T> 델리게이트 (0) 2020.07.28 람다식(Lambda Expression) (0) 2020.07.22 Func와 Action으로 델리게이트를 더 간단히 만들기 (0) 2020.07.22