using Study.DelegateSeries.Core.Calculator; using System; using System.Collections.Generic; using System.Text; namespace Study.DelegateSeries.Core { /// /// 实例化委托 /// public class InstanceDelegate { /// /// 基础语法 /// (c#1.0 开始提供) /// public CalculatorDelegate BaseInstance() { CalculatorDelegate operation = new CalculatorDelegate(new Addition().Add); return operation; } /// /// c#2.0 简写方法 /// (基于类型推断) /// public CalculatorDelegate AutoTypeInstance() { CalculatorDelegate operation = new Subtraction().Difference; return operation; } /// /// c#2.0 匿名委托 /// (使用匿名方法实例化的委托) /// public CalculatorDelegate AnonymousInstance() { //c# 2.0基础语法 CalculatorDelegate operation = delegate (decimal a, decimal b) { return (a * b) * (a * b); }; return operation; } /// /// c#3.0 Lambda表达式 /// (实质:"Lambda表达式"是一个匿名函数) /// public CalculatorDelegate LambdaInstance() { CalculatorDelegate operation = (decimal a, decimal b) => { return a * a + b * b + 2 * a * b; }; //自动推断 CalculatorDelegate operation2 = (a, b) => { return a * a + b * b + 2 * a * b; }; //{}只有一句时的简写 CalculatorDelegate operation3 = (a, b) => a * a + b * b + 2 * a * b; return operation; } } }