using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ConsoleApp1
{
class Cook
{
public static String Step1()
{
Console.WriteLine("放油");
return null;
}
public static String Step2()
{
Console.WriteLine("放葱");
return null;
}
public static String Step3()
{
Console.WriteLine("放菜");
return null;
}
public static String Step4()
{
Console.WriteLine("放调料");
return null;
}
public static String Step5()
{
return "糖醋里脊";
}
}
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ConsoleApp1
{
delegate String Cooking();
class Program
{
static void Main(string[] args)
{
Cooking cook = Cook.Step1;
cook += Cook.Step2;
cook += Cook.Step3;
cook += Cook.Step4;
cook += Cook.Step5;
cook -= Cook.Step1;
String result = cook();
Console.WriteLine(result);
}
}
}
最后一个返回值的return 糖醋里脊。如果把cook+=Cook.Step5往前调整,则会打印出null
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ConsoleApp1
{
delegate String Cooking();
class Program
{
static void Main(string[] args)
{
Cooking cook = Cook.Step1;
cook += Cook.Step2;
cook += Cook.Step3;
cook += Cook.Step5;
cook += Cook.Step4;
String result = cook();
Console.WriteLine(result);
}
}
}
委托的流程带返回值的话永远是得到最后一个方法的返回值