调用实例方法 前面我们讨论了如何使用委派调用静态方法。但是委派还能被用于调用特定对象的实例方法。在调用实例方法时,委派需要知道这个它要用方法操作的对象的实例。 为了理解实例方法的回调机制,让我们回头看看前面代码中的InstanceCallbacks方法。这段代码与静态方法的情形极其相似。注意在Set对象被创建之后,App对象被创建。这个App对象仅仅是创建而已,处于示例目的没有其它内容。当新的Feedback委派对象被创建的时候,它的构造齐备传到appobj.FeedbackToFile。这将导致这个委派包装对FeedbackToFile方法的引用,FeedbackToFile是个实例方法(非静态)。当这个实例方法被调用时,由appobj引用的对象被操作(作为隐藏传递参数)。FeedbackToFile方法的作用有点像FeedbackToConsole 和 FeedbackToMsgBox,不同的是它打开一个文件并将处理的项目串添加到文件尾。 揭开委派的神秘面纱 从表面上看,委派好像很容易使用:用C#委派关键字定义,用类似new操作符的方式构造它们的实例, 用类似方法调用的语法调用回调方法(不同的是不使用方法名,而是使用指代委派对象的变量)。 然而,委派的实际运行机制要比前述例子中所描述的过程要复杂的多。编译器和公共语言运行时(CLR)在幕后所做的许多处理隐藏了这些复杂性,在这一部分中,我们将集中精力来讨论编译器和CLR是如何协同工作实现委派机制的。这些知识将极大地丰富你对委派的理解并且这些知识将告诉你如何有效地使用它们。我们还将涉及到一些在编程中能用到的委派的附加特性。 |
正在阅读:介绍.NET中的委派(Delegates)之二介绍.NET中的委派(Delegates)之二
2004-02-14 09:34
出处:
责任编辑:pjl
键盘也能翻页,试试“← →”键