[例程]Delegate声明的定义使用

ZDNet软件频道 时间:2004-08-12 作者:Builder.com |  我要评论()
本文关键词:
如何定义一个delegate并且在何处使用?Tony Patton在本文中深入讨论了delegate。
本文译自Builder.com,未经许可请勿转载

如何定义一个delegate并且在何处使用?Tony Patton在本文中深入讨论了delegate

如何定义一个delegate并且在何处使用?Tony Patton在本文中深入讨论了delegate。

在最近有关.NET项目一次技术采访中,我被问到了关于定义术语的问题。由于项目是采用C#的.NET平台,所以问题就集中在C#上面。采访的过程非常有趣,但有一个特别的问题却是使我兴致大减,这一问题是:我是否必须定义delegate。虽然我已经广泛地使用它,但我还是很难从定义上回答。尽管我已经尽力回答,我还是感到事实尴尬。事实上,一个MCSD.NET应该能够毫无疑问地回答这样的问题。

delegate是什么?

根据微软的说法,一个delegate声明指定了一个相关的类型,你可以使用这一类型来封装一个含有特定标记的方法。一个delegate实例可以封装一个静态或一个实例方法。粗略的看来,Delegates就好象是C++中的函数指针;然而,delegates属于安全和保护类型。

我的采访是通过电话进行,所以我可以很容易和轻松地阐述这些定义。透明和详尽的解释是必须的。然而,作为贴切的delegates定义是,即使在没有对目标对象(target object)有任何了解的情况下,也可以随时使用某种方法,这样的方法即为delegates。很多开发人员通常将它们说成回调函数(callback functions)。现在让我们看一个范例,以更好理解它的应用。

应用中的Delegates

我们的范例程序开始于两个简单的C#类,这两个类包含一个方法以通过控制台来显示信息:

public class DelegateClass1 {

public void exampleMethod1(String passedString) {

Console.WriteLine(passedString); }

}

public class DelegateClass2 {

public void exampleMethod2(String passedString) {

Console.WriteLine(passedString); }

}


百度大联盟认证黄金会员Copyright© 1997- CNET Networks 版权所有。 ZDNet 是CNET Networks公司注册服务商标。
中华人民共和国电信与信息服务业务经营许可证编号:京ICP证010391号 京ICP备09041801号-159
京公网安备:1101082134