委托:是一种数据类型(并且为引用类型),也是方法的引用,*主要用委托指向多个方法,一次性操作不相关类所具有方法;
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方法中给委托加方法还不知道。望有知道的人给我评论下谢了!!!!