正在阅读:介绍.NET中的委派(Delegates)之三介绍.NET中的委派(Delegates)之三

2004-02-14 09:34 出处: 作者:赵湘宁 责任编辑:pjl
因为所有的委派都派生于MulticastDelegate,它们继承了MulticastDelegate的域,属性和方法。在所有这些成员中,你要特别注意三个私有(private)域: 用于委派类型的私有域:
类型 描述
_target System.Object 指回调函数被调用时应该操作的对象。用于实例方法回调
_methodPtr System.Int32 内部整型,CLR用它来标示被回调的方法
_prev System.MulticastDelegate 指另一个委派对象,通常为null
  所有的委派都有代两个参数的构造器:一个参数是对象引用,一个是指代回调方法的整型。但是,如果你检查源代码,就会发现明白诸如App.FeedbackToConsole 或 appobj.FeedbackToFile的传递使用值进行的。你的敏感会告诉你这个代码不能编译!   然而,编译器知道某个委派被创建,同时编译器解析源代码以决定引用哪个对象和方法。对象引用被传递为目标参数,并且用某个特定的Int32值(从某个MethodDef或MethodRef元数据符号获得)标示的方法被传递为methodPtr参数。对于静态方法,null被传递为目标参数。在构造器内部,这两个参数被存储在它们对应的私有(private)域中。   另外,构造器将这个域置为null。这个域被用来创建一个MulticastDelegate对象链表。现在我们暂时忽略_prev域,在后续文章中将会详细讨论有关它的内容。
键盘也能翻页,试试“← →”键

关注我们

最新资讯离线随时看 聊天吐槽赢奖品