C# 委托机制

本文详细介绍了 C# 中委托的基本概念、语法及应用场景。通过实例演示了如何定义、实例化委托,并将其绑定到具体的方法上。此外还探讨了委托在避免冗余条件判断语句方面的优势以及提高代码可扩展性的能力。

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

委托在C#中应用非常广泛。最近初学C#,记录

delegate

一般语法:首先声明delegate

 public delegate void BoilHandler(int param);

相比普通方法:

public float scrollValue()
形式上只是多了一个标志 delegate而已。其实可以这样理解前面一条声明:相当与定义了一个参数类型,该参数类型表示所有可以接收int参数的方法。。

面向对象思想告诉我们一切都是对象,包括;int 、char 、String 甚至包括method(方法)。既然参数可以是其他对象,当然可以是Method了。

定义一个方法fuction,接收一个Boilhandler的参数类型。

 fuction(BoilHandler boilHandler ){
							int m = 1;;
							boilHandler(m);

							}
假如还有个方法是这样的:

void  add(int i){
		i++;
	}
当其他地方调用fuction函数时就可以将add方法传入,fuction(add);


这里,对委托做一个总结:

委托是一个类,它定义了方法的类型,使得可以将方法当作另一个方法的参数来进行传递,这种将方法动态地赋给参数的做法,可以避免在程序中大量使用If-Else(Switch)语句,同时使得程序具有更好的可扩展性。

既然如此,当然可以对委托经行实例化!并且可以通过C#语法将方法绑定到委托上,

实例化和String类是一样的:

public BoilHandler b1,b2;

绑定如:b1+=add;  b2+=decrease;

调用时只需传入参数b1 或者b2即可! 如:fuction(b1); 方法一经调用,即会执行add方法。。。

这里需要注意一点是:我们可以将多个方法绑定到一个delegate上。通常一个实例即可。

如:b1 += add; b1 += decrease;如果调用fuction(b1);即会依次执行add和decrease两个方法。。

+=表示绑定一个方法,-=表示取消绑定;


下面是一个比较简洁的委托事例:

public class DelegateManager{
	
	public BoilHandler bh;
	public void fuction(int a){
		if(bh != null){
			bh(a);
		}
	}
}


客户端这样调用即可
	
static void Main(string[] args) {
    
DelegateManager dm = new  DelegateManager();
    dm.bh = add;
    dm.bh += derease;

    bh.fuction(3);      
}



今天到这,明天学习事件。初学,模糊不清,希望看到此博客的有缘人不吝赐教。




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值