Programming/C#
[C#] Func 대리자 (지정된 형식의 값을 반환하는 대리자)
devfactory
2024. 9. 28. 23:12
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;
}
}
반응형