문제/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);
}
}
}
}