刚刚学习了委托的内容,先来说一下自己对委托的理解,权当是复习吧:
委托可以定义在类里面,也可以定义在类外面,如果定义在类里面就只能被这个类调用,不论声明它是public 还是private。如果定义在类外面就能被所有类调用。如果程序是多线程的,委托方法希望能在UI层调用,那么可以在命名空间下定义。
//委托的声明 delegate关键字,这个委托只能代表返回值是空、参数是一个string类型的一个方法public delegate void GreetingDelegate(string name);
private static void GreetPeople(string name, GreetingDelegate MakeGreeting) { MakeGreeting(name); } //传入的是什么方法,MakeGreating就是那个方法,比如有一个方法满足委托所需的条件,返回值是void,参数是string类型的,个数是一个: private static void EnglishGreeting(string name) { Console.WriteLine("Morning, " + name); } //那么他就可以被委托 GreetPeople("Jimmy Zhang", EnglishGreeting); //传入的是EnglishGreeting方法,那么GreetPeople中的MakeGreeting就是EnglishGreeting,自然就会去执行EnglishGreeting方法 //另外一种形式 GreetingDelegate delegate1; delegate1 = EnglishGreeting;//委托对象只能赋值方法名,不能接括号和参数
多播委托:使用委托可以将多个方法绑定到同一个委托变量,当调用此变量时(这里用“调用”这个词,是因为此变量代表一个方法),可以依次调用所有绑定的方法。但是这些方法必须具有相同的参数类型和返回值类型:
GreetingDelegate delegate1; delegate1 = EnglishGreeting; delegate1 += ChineseGreeting; ...
委托绑定/取消绑定方法的方法:+=或-=(也可以称之为注册方法)
给委托添加绑定或取消绑定方法时,委托里面一定要已经有了方法才行
时间: 2024-12-22 16:40:30