본문 바로가기
Programming/C#

[C#] Func 대리자 (지정된 형식의 값을 반환하는 대리자)

by devfactory 2024. 9. 28.

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