浅谈c#委托的四种用法及lambda匿名委托

本文深入探讨C#中的委托,特别是delegate、Action、Func和Predicate的使用。通过一个实例展示了如何利用委托实现多线程操作,解释了如何通过委托进行跨线程控件访问,以及如何简化代码利用lambda表达式。文中还提到了委托的执行顺序以及不同类型的委托在实际场景中的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

c#委托是一个类,可以定义一种方法类型,将有这种类型的函数当做参数进行传递,即他是一个可以把方法作为参数的类。

这里通过一个小功能分别说明一下c#委托(delegate、Action、Func、predicate)的用法。

如下图所示:
这里写图片描述

Form1窗体里有两个进度条,点击start按钮,他们同时进行读取,这里就需要用到多线程。因为两个进度条如果在一个线程内,只能一个一个的读取。而用到多线程就要跨线程访问控件,这里最简单方法就是调用允许跨线程访问控件的方法,虽然一句话就可以解决,但是在复杂的程序中会造成一些莫名其妙的错误,所以用委托可以解决这个问题。

  1. delegate
    这里先用委托使两个进度条可以逐个读取。然后在用跨线程委托的方式使他们可以同时进行读取。
    先定义一种委托类型并声明委托对象:
public delegate void SetProgressBar(int value);
SetProgressBar setProgressBar;

通俗的讲, setProgressBar是一个可以传递带一个int类型参数函数的委托。那就可以定义两个带int类型参数的函数,来让setProgressBar当参数传递即可。

        private void setProgressValue1(int value)
        {
            progre
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

非正经程序员

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值