Unity C# 基础复习27——委托示例(P448)

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);

        }
    }
}

 委托的流程带返回值的话永远是得到最后一个方法的返回值

猜你喜欢

转载自blog.csdn.net/weixin_46711336/article/details/125471596