반응형
말 그대로 이름이 없는 델리게이트다
이는 자주 사용하지 않는 델리게이트 메소드를 대신할 때 사용 한다.
한 두번 밖에 쓰지 않으면 바록 작성해 주는게 코드 리딩에 용이하기 때문이다.
이 델리게이트 메서드를 따로 생성하지 않고
델리게이트 변수를 선언하고 익명의 델리게이트를 Count 메서드에서 바로 작성해주면 된다.
Count 메서드의 return 값은 int 형 타입니다.
int 형 변수를 선언하여 Count 메서드의 리턴 값을 받아 준다.
memberTest 자리에 익명의 델리게이트를 넣어준다.
익숙하지 않아 어려울 수 있지만 델리게이트에서 이름만 없고 이름 없어서 내용을 채워준다고 생각하면된다.
delegate(int a) {return a % 2 ==0;}
delegate(int a) {return a % 2 !=0;}
이름이 없으니까 누군지 모르니까 줄줄이 풀어서 머하는 놈인지 설명해준다 !
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ConsoleApp7
{
class Program
{
delegate bool MemberTest(int a);
static void Main(string[] args)
{
var arr = new[] { 3, 34, 6, 34, 23, 5, 23, 6, 23, 346, 2 };
//익명 델리게이트!
int even = Count(arr, delegate (int a) { return a % 2 == 0; });
int odd = Count(arr, delegate (int a) { return a % 2 != 0; });
Console.WriteLine("짝수" + even);
Console.WriteLine("홀수" + odd);
}
static int Count(int[] a , MemberTest memberTest)
{
int count = 0;
foreach (var item in a)
{
if (memberTest(item) == true)
{
count++;
}
}
return count;
}
//public static bool IsODD(int A) { return A % 2 != 0; }
//public static bool IsEVEN(int A) { return A % 2 == 0; }
}
}
Func 델리케이트로 더욱 간단하게 만들 수 있다.
Func<int , bool> func
이는 int 변수를 받아 bool 값을 반환한다는 캡슐역할을 말한다.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ConsoleApp8
{
class Program
{
//delegate bool MemberTest(int a); = Func<int,bool> func
//Func 와 Action은 .NET에서 미리 선언해 둔 델리게이트 입니다.
static void Main(string[] args)
{
var a = new[] { 1, 2, 3, 4, 5,34,52,34,345,134,34,325,23,42,356 };
int odd = Count(a, delegate (int x) { return x % 2 != 0; });
int even = Count(a, delegate (int x) { return x % 2 == 0; });
}
static int Count(int[] a , Func<int,bool> func)
{
int count = 0;
foreach ( var item in a)
{
if (func(item))
{
count++;
}
}
return count;
}
}
}
반응형
'C#' 카테고리의 다른 글
C# 문법 - Delegate의 기본 , 배열에서 홀수와 짝수 찾는 코드 알려드림 (0) | 2023.03.16 |
---|---|
C# 문법 - 가변 매개 변수 Params 사용법에 대해 알아보자 (0) | 2023.03.16 |
C#- Winform 윈폼 기초 문법에 대해 같이 알아 봅시다. (0) | 2023.03.15 |
C# LINQ 문법 사용법에 대해 공부해보고 알아보자 (0) | 2023.03.13 |
C# - PDA 프로그램 개발 업데이트 (2) | 2023.03.12 |
C# 알고리즘 -소수 (1보다 큰 자연수 중 1과 자기 자신만을 약수로 가지는 수) 구하기 (2) | 2023.03.10 |