直接上代码,解释都在注释了
using System;
using System.Collections.Generic;
using System.ComponentModel;
namespace DelegateExample
{
class Program
{
static void Main(string[] args)
{
//最常用的委托:Action ,Function
Calculator calculator = new Calculator();
Action action = new Action(calculator.Report);
calculator.Report();//直接调用Report方法
action.Invoke();//间接调用,委托.invoke
action();//委托的简便写法
//若是想要把加法和减法使用委托,需要用到Func<>泛型委托
Func<int,int,int>func1 = new Func<int,int,int>(calculator.Add);
//三个int,分别是:参数,参数,返回值
Func<int,int,int>func2 = new Func<int, int, int> (calculator.Sub);
//普通写法
int x = 100, y = 200, z = 0;
z = func1.Invoke(x, y);
Console.WriteLine(z);
z=func2.Invoke(x, y);
Console.WriteLine(z);
//函数指针式写法
z = func1(x, y);
Console.WriteLine(z);
z = func2(x, y);
Console.WriteLine(z);
}
}
class Calculator
{
public void Report()
{
Console.WriteLine("i have 3 methods");
}
public int Add(int a,int b)
{
return a + b;
}
public int Sub(int a,int b)
{
return a - b;
}
}
}