委托

本文详细介绍了委托的概念及其在软件开发中的应用。包括如何定义委托、创建委托对象、初始化委托以及使用多播委托等关键步骤。此外,还展示了如何利用委托简化不同类间方法的调用。

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

委托:是一种数据类型(并且为引用类型),也是方法的引用,*主要用委托指向多个方法,一次性操作不相关类所具有方法;
1:定义委托名:delegate void <委托名>stopmanchinerydelegat();//类似方法,无返回值,无参数
2:定义委托对象:<委托名>stopmanchinerydelegat <对象>stopmachine;相当于类的实例化
3:委托工作即初始化(方法):public void stepstopmachinery(){//stopmanchine=new stopmanchinerydelegat(floder.stopfolding);另一种写法
对象+=folder.stopfolding//把谁给委托,告诉委托干什么}用委托指向多个方法(叫做多播委托)
多看了指向就把“+”换成“-”
用时写在另一个方法里:方法名();对象();

委托被封装后,只能在一个类里访问,不能跨类,也只能在指定的方法中赋值(例如stepstopmachine方法中)

//之前做法

private foldingmachine folder;//只是定义了这样的字段但仍未实例此类对象,所以下面不能直接字段名.方法调用方法;要在主程序中实例化后通过属性赋值给该字段,在该类中下面的方法中才能调用;(控制类中)

foldingmachine folder = new foldingmachine();//控制类中声明了字段,需要实例化后才可调用对应类里的方法(在主函数中)

//用委托

//定义委托
public delegate void stopMachinedelegate();//1:定义委托
public stopMachinedelegate stopMachinery;//2:用委托名实例个对象
//将委托写在一个方法中
public void stepstopmachinery()//设置这个委托都干什么,用委托可代替之前做法(定义字段传值然后对象.对应类结束的方法)
{
//3:委托变量的初始化
//stopMachinery = new stopMachinedelegate(folder.stopfolding);//把folder.stopfolding方法给委托;
//stopMachinery = new stopMachinedelegate(painer.paintoff);
//stopMachinery = new stopMachinedelegate(welder.finishwelding);//一般不用这种方法
//这样写可以把所有机器的方法都能实现(委托对象+=机器类对象.对应方法)
stopMachinery += folder.stopfolding;//把对应类里的方法都设置给委托对象
stopMachinery += welder.finishwelding;
stopMachinery += painer.paintoff;
stopMachinery -= painer.paintoff;
//不写加号只能出现一个
//用减号就是断开连接,不把该方法

}

//定义方法
public void shutdown()
{
//folder.stopfolding();
//painer.paintoff();
//welder.finishwelding();
stepstopmachinery();//先附上值,才能调用。把设置委托都干什么的方法给本方法,所以要调用这方法
stopMachinery();//执行委托,因为委托的设置寄托于委托对象


}

到底能不能在main方法中给委托加方法还不知道。望有知道的人给我评论下谢了!!!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值