【文件属性】:
文件名称:事件的由来-python3+opencv3识别图片中的物体并截取的方法
文件大小:10.59MB
文件格式:PDF
更新时间:2021-07-10 13:22:15
.net之美 关键技术解析
3.2 事件的由来
3.2.1 更好的封装性
继续思考前面的程序:前面的三个方法都定义在Program类中,这样做是为了方便理
解,在实际应用中,通常都是GreetPeople在一个类中,ChineseGreeting和EnglishGreeting
在另外的类中。现在大家已经对委托有了初步了解,是时候对上面的例子进行改进了。假设
将GreetPeople()放在一个叫GreetingManager的类中,那么新程序应该是这样的:
namespace Delegate {
//定义委托,它定义了可以代表的方法的类型
public delegate void GreetingDelegate(string name);
//新建的GreetingManager类
public class GreetingManager{
public void GreetPeople(string name, GreetingDelegate MakeGreeting) {
MakeGreeting(name);
}
}
class Program {
private static void EnglishGreeting(string name) {
Console.WriteLine("Morning, " + name);
}
private static void ChineseGreeting(string name) {
Console.WriteLine("早上好, " + name);
}
static void Main(string[] args) {
// ... ...
}
}
}
这个时候,要实现前面演示的输出效果,Main方法应该是这样的:
static void Main(string[] args) {
GreetingManager gm = new GreetingManager();
gm.GreetPeople("Jimmy Zhang", EnglishGreeting);
gm.GreetPeople("张子阳", ChineseGreeting);
}
运行这段代码,没有任何问题。程序一如预料地那样输出了:
Morning, Jimmy Zhang