문제/C# 연습문제

C# 연습문제 : 델리게이트와 이벤트 (뇌를 자극하는 C# 5.0)

코딩너구리 2022. 9. 20. 22:14

1. 출력 결과가 7과 2가 나오도록 아래의 코드에 익명 메소드를 추가하여 완성하세요.

 

using System;

namespace BookTestC
{
    public delegate int MyDelegate(int a, int b);

    public class Program
    {
        private static void Main(string[] args)
        {
            MyDelegate Callback;

            Callback = /* 익명 메소드 선언 */

            Console.WriteLine(Callback(3, 4));


            Callback = /* 익명 메소드 선언 */

            Console.WriteLine(Callback(7, 5));
        }
    }
}

 

using System;

namespace BookTestC
{
    public delegate int MyDelegate(int a, int b);

    public class Program
    {
        private static void Main(string[] args)
        {
            MyDelegate Callback;

            Callback = delegate (int a, int b)
            {
                return a + b;
            };

            Console.WriteLine(Callback(3, 4));

            Callback = delegate (int a, int b)
            {
                return a - b;
            };

            Console.WriteLine(Callback(7, 5));
        }
    }

 

 

2.출력 결과가 다음과 같이 나오도록 다음 코드에 이벤트 처리기를 추가하세요.

축하합니다! 30번째 고객 이벤트에 당첨되셨습니다.
using System;

namespace BookTestC
{
    public delegate void MyDelegate(int a);

    public class Market
    {
        public event MyDelegate CustomerEvent;

        public void BuySomething(int customerNumber)
        {
            if (customerNumber == 30)
            {
                CustomerEvent(customerNumber);
            }
        }
    }

    public class Program
    {
        private static void Main(string[] args)
        {
            Market market = new Market();
            market.CustomerEvent += new MyDelegate(/*이벤트 처리기를 구현하세요 */);

            for (int customerNumber = 0; customerNumber < 100; customerNumber++)
            {
                market.BuySomething(customerNumber);
            }
        }
    }
}
using System;

namespace BookTestC
{
    public delegate void MyDelegate(int a);

    public class Market
    {
        public event MyDelegate CustomerEvent;

        public void BuySomething(int customerNumber)
        {
            if (customerNumber == 30)
            {
                CustomerEvent(customerNumber);
            }
        }
    }

    public class Program
    {
        public static void MyHandler(int number)
        {
            Console.WriteLine("축하합니다! {0}번째 고객 이벤트에 당첨되셧습니다.", number);
        }

        private static void Main(string[] args)
        {
            Market market = new Market();
            market.CustomerEvent += new MyDelegate(MyHandler);

            for (int customerNumber = 0; customerNumber < 100; customerNumber++)
            {
                market.BuySomething(customerNumber);
            }
        }
    }
}