본문 바로가기

C#

C# 문법 - Delegate의 기본 , 배열에서 홀수와 짝수 찾는 코드 알려드림

반응형

배열에서 짝수 홀수 갯수 찾는 메서드 만드는건 생각 보다 간단하다. 

여기에서 델리게이트  사용하는 방법을 적용해보고자 한다. 

 

델리게이트 사용하는 방법이 헷깔리면 이 해당 코딩을 반복 학습하면 이해하기 쉬울 것이다. 

 

 

우선 int 배열을 선언해 준다.

 

그리고 짝수 홀수를 콘솔클래스를 통해 출력해 줄 것이다. 

 

우선 카운트 메서드를 작성해보자 

이렇게 만들면 된다.

int 배열을 인수로 받아서 해당 배열을 foreach로 검열한뒤

if 조건문으로 짝수에서 카운트 해주면 된다. 

 

홀수 카운드는 해당 빨간팬 부분만 다르게 해주면 갯수를 리턴할 수 있다. 

 

이는 결국 비슷한 메서드를 두개 만드는 일을 하게 된다. 

이런 코드의 낭비를 줄여주고 긴 코드에 간섭이 안생기도록 해주며 코딩 해석이 쉽게해 주는 것이 

delegate 의 역할이다. 

 

 

우선은 사소한 차이를 보이는 코딩을 확인해보자 !

 

item % 2 != 0 ; 

item % 2 == 0; 

 

이부분이다 .

이 부분을 메서드로 만들어 보자! 

 

조건문에 들어가야 되기 때문에 불 (boolen) 형으로 만든다.

 

이렇게 만들었다 ODD -> 홀수 EVEN -> 짝수

 

두개의 매서드를 만들었다 한들 해당 불형 매서드를 사용할려면 결국엔 두 개의 Count 매서드가 필요할 것이다. 

여기서 델리케이트를 사용하면 하나의 Count  매서드로도 코딩이 가능하다!

 

델리케이트를 선언해보자 델리게이트는 대리자 역할을 한다. 그래서 대신 일해 줄 메서드와 비슷하게 작성하면 된다.

 

여기서 중요한게 이 델리게이트를 어디다에 집어 넣냐 이다.

델리 게이트는 결국 메서드의 역할을 대신해서 해주는 거니까 

 

해당 메서드를 받아 주는 메서드나 클래스에 인수로 가져와 주면 된다. 

 

요렇게 출력하면 된다. 

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleApp6
{
    delegate bool DelegateTest(int a);
    class Program
    {
        static void Main(string[] args)
        {
            int[] a = new int[] { 1, 23, 4, 12, 123, 4, 5, 23, 12, 5, 12, 4, 56 };
            Console.WriteLine("짝수" + Count(a, IsEVEN));
            Console.WriteLine("홀수" + Count(a, IsODD));
        }
        static int Count(int[] a, DelegateTest delegateTest)
        {
            int count = 0; 
            foreach (var item in a)
            {
                if (delegateTest(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; }

    }
}
반응형