using System;
class Program
{
delegate int Calculator(int Num1, int Num2);
static int Add(int iNum1, int iNum2)
{
return iNum1 + iNum2;
}
static int Sub(int iNum1, int iNum2)
{
return iNum1 - iNum2;
}
static int Mul(int iNum1, int iNum2)
{
return iNum1 * iNum2;
}
static int Div(int iNum1, int iNum2)
{
return iNum1 / iNum2;
}
static void Main(string[] args)
{
int iResult;
iResult = Add(3, 4);
Console.WriteLine(iResult);
iResult = Sub(3, 4);
Console.WriteLine(iResult);
iResult = Mul(3, 4);
Console.WriteLine(iResult);
iResult = Div(3, 4);
Console.WriteLine(iResult);
Console.WriteLine();
//
Calculator[] aCalculator = new Calculator[] { Add, Sub, Mul, Div };
for (int i = 0; i < aCalculator.Length; i++)
{
Console.WriteLine(aCalculator[i](3, 4));
}
Console.WriteLine();
//
foreach (Calculator calculator in aCalculator)
{
Console.WriteLine(calculator(3, 4));
}
Console.WriteLine();
//
Calculator c = Add;
Console.WriteLine(c(3, 4));
}
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
class Program
{
delegate int NewType(int Num); // 위임, 대리자
static int OnePlus(int Num)
{
return Num + 1;
}
static int TenPlus(int Num)
{
return Num + 10;
}
static void Main(string[] args)
{
int TestNum = OnePlus(100);
Console.WriteLine(TestNum);
NewType newType = new NewType(OnePlus);
TestNum = newType(1000);
Console.WriteLine(TestNum);
newType = new NewType(TenPlus);
TestNum = newType(1000);
Console.WriteLine(TestNum);
}
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
public class Mathematics
{
delegate int CalcDelegate(int x, int y);
static int Add(int x, int y) { return x + y; }
static int Subtract(int x, int y) { return x - y; }
static int Multiply(int x, int y) { return x * y; }
static int Divide(int x, int y) { return x / y; }
CalcDelegate[] methods;
public Mathematics()
{
// static 메서드를 가리키는 델리게이트 배열 초기화
methods = new CalcDelegate[] { Mathematics.Add, Mathematics.Subtract, Mathematics.Multiply, Mathematics.Divide };
}
public void Calculate(char opCode, int operand1, int operand2)
{
switch (opCode)
{
case '+':
Console.WriteLine("+: " + methods[0](operand1, operand2));
break;
case '-':
Console.WriteLine("-: " + methods[1](operand1, operand2));
break;
case '*':
Console.WriteLine("*: " + methods[2](operand1, operand2));
break;
case '/':
Console.WriteLine("/: " + methods[3](operand1, operand2));
break;
}
}
}
class Program
{
delegate void WorkDelegate(char arg1, int arg2, int arg3);
static void Main(string[] args)
{
Mathematics math = new Mathematics();
WorkDelegate work = math.Calculate;
work('+', 10, 5);
work('-', 10, 5);
work('*', 10, 5);
work('/', 10, 5);
}
}
'스마트팩토리 > C#' 카테고리의 다른 글
26. 연산 범위 확인, 가변 매개변수, extern, unsafe (0) | 2020.07.27 |
---|---|
25. MessageMap (0) | 2020.07.24 |
23. Indexer (0) | 2020.07.23 |
22. 복습 (0) | 2020.07.20 |
21. 게임제작, 복습 (0) | 2020.07.17 |