WEB开发网
开发学院软件开发C语言 我眼中委托的真正面貌(一) 阅读

我眼中委托的真正面貌(一)

 2009-05-07 08:26:53 来源:WEB开发网   
核心提示: 这段代码相对于上段代码产生了部分改动,不过,我眼中委托的真正面貌(一)(4),意思上大体相同:这次的委托对象定义在次类中,不过仅仅是一个引用,C#中的事件就是委托的一种特殊形式,4.C#中事件的实现首先,我并没有在次类中对其进行任何的初始化,相反

这段代码相对于上段代码产生了部分改动,不过,意思上大体相同:这次的委托对象定义在次类中,不过仅仅是一个引用,我并没有在次类中对其进行任何的初始化。相反,次类中委托对象方法挂载的工作是在主类中进行的:首先,我在主类中定义次类的实体对象,而后通过这个对象将主类的DelegateFun()方法挂接到次类的委托对象上。这样当次类的方法MyFun()被调用(事实上,你也可以将这个方法看做一个事件,当事件被触发时),就会调用主类中事先写好的DelegateFun()方法。

写到这里,我不知道你有没有看出使用委托的优势所在。其实,将第二段、第三段代码反复比对之后你就会发现二者有明显的不同!我们暂且撇开委托这种机制不谈,但看两段代码中本类与次类方法交互的手法便不难发现:二、三同为一个类调用另一个类中的方法,前者为一个类控制自身调用(另一个类的)一些方法;而后者却是一个类在控制另一个类调用哪些方法。

呵呵……悟性好的人应该已经联想到了,这种手法很像C#中的事件机制。而事实上,C#中的事件就是委托的一种特殊形式。

4.C#中事件的实现

首先,我先构建一个用户控件工程,代码如下:

namespace Ctrleven

{

    public partial class UserControl1 : UserControl

    {

        //定义委托

        public delegate void MyEventHander();

 

        //用委托声明事件

        public event MyEventHander MyEvent;

 

        public UserControl1()

        {

            InitializeComponent();

        }

 

        private void button1_Click(object sender, EventArgs e)

        {

            MyEvent();

        }

    }

}

上一页  1 2 3 4 5 6 7  下一页

Tags:眼中 委托 真正

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接