2021-12-22-《C#基础+WinForms》-内容总结-P11 委托+Lambda

视频资料: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>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值