namespace: System
Func delegate는 Action과 유사하다.
Action은 반환형식이 없는 경우 사용하는 반면 Func는 반환값이 필요할 때 사용한다.
[Func 형식]
Func 대리자의 오른쪽 끝(TResult)은 반환값의 타입이다.
public delegate TResult Func<out TResult>();
public delegate TResult Func<in T,out TResult>(T arg);
public delegate TResult Func<in T1,in T2,out TResult>(T1 arg1, T2 arg2);
.
.
.
public delegate TResult Func<in T1,in T2, ... in T16,out TResult>(T1 arg1, T2 arg2, ... T16 arg16);
아래 코드와 같이 응용하여 특정 조건을 만족하는 List의 요소만 남기는 코드를 만들 수 있다.
using System;
using System.Collections.Generic;
static class Program
{
static List<int> List = new List<int>();
static void Main(string[] args)
{
List.Add(1);
List.Add(2);
List.Add(3);
List.Add(4);
List.Add(5);
List.select((int i) => i > 2);
}
static List<T> select<T> (this List<T> list, Func<T, bool> func)
{
for (int i = 0; i < list.Count; i++)
{
if(!func(list[i]))
{
list.RemoveAt(i);
i--;
}
}
return list;
}
}
반응형
'Programming > C#' 카테고리의 다른 글
[C#] Thread(1) 스레드의 개념 (1) | 2024.09.28 |
---|---|
[C#] event (1) | 2024.09.28 |
[C#] Types (0) | 2024.09.28 |
[C#] const보다는 readonly가 좋다 (1) | 2024.09.28 |
[C#] 확장메서드 (1) | 2024.09.28 |