视频资料:https://www.bilibili.com/video/BV1Gx411U7Hb?p=11
刘铁猛老师: https://www.bilibili.com/video/BV13b411b7Ht?p=31
https://www.bilibili.com/video/BV13b411b7Ht?p=19
与2021-06-18-刘铁猛C#语言入门详解-学习笔记P19委托配合食用
回溯:2022/01/04/06/09
总结:
1.委托使用举例
委托:将方法作为方法的参数,特殊的类类型
何时使用委托:当无法封装变化点,违反OCP原则时使用
委托使用步骤:声明委托类型、修改形参列表、传入委托
2.Lambda==委托的简写
分为语句Lambda、表达式Lambda
两者区别:后者只有一条语句,并默认语句自带“return”
3.自定义委托&&系统自带泛型委托
自定义委托;
3种常用
Action<> 无返回值
Func<> 有返回值
Predicate<> 返回值为布尔类型(谓词),只可跟一个参数
4.LINQ串讲
常用的Where()以及Select()方法
优点:
1.封装了方法,调用就行;(如果你自己写的话,要写好多代码才能达到,何况性能还不知道如何)
2.同时加快开发速度
1.委托使用举例
委托:将方法作为方法的参数
何时使用委托:当无法封装变化点,违反OCP原则时使用
委托使用步骤:声明委托类型、修改形参列表、传入委托
myDele这个变量引用着一个MyDele类型的实例,这个实例里“绑定”着M1这个方法。
using System;
using System.Reflection;
using Microsoft.Extensions.DependencyInjection;
namespace ConsoleApp1
{
delegate void MyDele();
class Program
{
static void Main(string[] args)
{
MyDele myDele = new MyDele(M1);
myDele.Invoke();
}
static void M1()
{
Console.WriteLine("M1 is called!");
}
}
}
//输出
M1 is called!
多播委托:委托可以“绑定”多个方法
using System;
using System.Reflection;
using Microsoft.Extensions.DependencyInjection;
namespace ConsoleApp1
{
delegate void MyDele();
class Program
{
static void Main(string[] args)
{
MyDele myDele = new MyDele(M1);
//Student student = new Student();
//myDele += student.SayHello;
myDele += (new Student()).SayHello;
myDele.Invoke();//myDele();
}
static void M1()
{
Console.WriteLine("M1 is called!");
}
}
class Student
{
public void SayHello()
{
Console.WriteLine("Hello!");
}
}
}
//输出
M1 is called!
Hello!
声明委托类型:delegate bool Function(int num);Function委托的实例能“绑定”的函数返回值为bool,且参数列表有一个参数
static List<int> Traverse(List<int> nums)
{
List<int> list = new List<int>