본문 바로가기

IT

C# Func 사용법 예제

 

Func<int, int>

Func<int, string>

Func<string, string>

Func<int, bool>

Func<string>

.

.

.

 

실무에서 정말 많이 쓰이는 패턴들 예제로 보여드리겠습니다.

이걸 알면 C#의 함수형에 대해 제대로 이해했다고 생각하시면 됩니다.

 

1. Func 을 리스트에 적용하기 (데이터 변형, 조건 필터링)

 

예제 : 숫자 리스트에서 짝수만 2배로 변환

 

List<int> numbers = new List<int> { 1, 2, 3, 4, 5 };

// Func 사용: int를 받아 int를 반환하는 함수
Func<int, int> doubleIfEven = n => (n % 2 == 0) ? n * 2 : n;

// Select를 통해 변환
var result = numbers.Select(doubleIfEven);

foreach (var n in result)
    Console.WriteLine(n);  // 출력: 1, 4, 3, 8, 5

 


 

 

 2. Func 을 조건 함수로 사용하기 (동적 필터)

 

Func<int, bool> isOdd = n => n % 2 != 0;

var oddNumbers = numbers.Where(isOdd);

foreach (var n in oddNumbers)
    Console.WriteLine(n);  // 출력: 1, 3, 5

 

==> 이렇게 Func<T, bool>은 필터 조건으로 자주 사용됩니다.

 


 

 

3. Func 을 버튼 이벤트처럼 사용하기

 

예제 : 버튼 클릭 시 실행할 동작을 함수로 전달

 

// 가상의 버튼 클릭 핸들러 시뮬레이션
void OnButtonClick(Func<string> getMessage)
{
    Console.WriteLine("버튼 클릭됨");
    Console.WriteLine("메시지: " + getMessage());
}

// 함수 정의 없이 바로 람다로 전달
OnButtonClick(() => "안녕하세요, 김희선입니다.");

 

결과 

 

버튼 클릭됨
메시지: 안녕하세요, 김희선입니다.

 


 

 

3. Func 을 파라미터로 전달해서 동작을 유연하게

 

void ProcessData(int[] data, Func<int, bool> condition)
{
    foreach (var item in data)
    {
        if (condition(item))
            Console.WriteLine("조건에 맞음: " + item);
    }
}

int[] arr = { 10, 15, 20, 25 };

// 20보다 큰 값만 출력
ProcessData(arr, n => n > 20);

 

==> 이 패턴은 전략 패턴이나 필터링 유틸리티처럼 쓸 수 있습니다.

 

※ 요약

Select() 데이터를 변환하는 함수
Where() 조건 필터 함수
버튼 이벤트 실행 시 사용할 함수 전달
사용자 정의 메서드 유연한 조건, 계산 로직 전달 가능

 

개발은 많이 보고 많이 짜봐야 하는 듯 합니다.

업무나 공부에 도움되시길 바랍니다.

^^

 

'IT' 카테고리의 다른 글

C# SWICH 문 예제  (0) 2025.04.02
C# 델리게이트 이벤트핸들러 사용 예제  (0) 2025.03.28
C# 델리게이트 이해 및 예제  (0) 2025.03.28
C# Clone() 함수 사용법과 예제  (0) 2025.03.25
C# foreach 와 for 문 LINQ 사용법  (2) 2025.03.25