老兄们,给说说委托是怎么回事,什么时候能用到他,可以一个委托有多个处理函数么
老兄们,给说说委托是怎么回事,什么时候能用到他,可以一个委托有多个处理函数么 --------------------编程问答-------------------- 委托 用C++的概念来说类似函数指针, 一个委托代表一个函数或一个函数数组, 最简单的例子是做一个控件, 放个TextBox, 需要的功能是在TextBox变化的时候通知控件的容器. 这个时候就需要使用委托. 建议看看MSDN帮助中关于控件事件的内容.当然还有其他的用法, 比如动态调用DLL的时候,也可以声明委托指向需要调用的不知名的函数.
--------------------编程问答-------------------- 委托一般不会用到,IDE都自动生成的。除非你动态生成控件,比如:
LinkButton AButton = new LinkButton();
这时要挂接事件需要用到委托
AButton.Click += new System.EventHandler(AButton_Click);
还有就是开发控件时会用到,一般情况不会用到,当你需要委托才能完成工作时,委托就不是难点了 --------------------编程问答-------------------- 委托是方法或函数的指针,
也可以把委托想象成函数或方法的类型
//声明一个Class1对象
public class Class1{}
Class1 o = new Class1()
//声明一个Delegate1委托
public void Delegate1Method(int id){};
//声明一个事件
public event Delegate1 Delegate1Event1;
//将方法帮定到事件
this.Delegate1Event1 += new Delegate1(this.Delegate1Method); --------------------编程问答-------------------- 委托最常用的是回调(CallBack)...
对于只知道拖控件的人来讲就是事件(Event)用的多了... --------------------编程问答-------------------- using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
public partial class delegate_ : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
test t = new test();
t.event_titleChange += new test.title_change(change);//为事件指定了委托对象,被委托的函数这里不用写参数
t.title = "omeweb";
t = null;
}
protected void change(string title)//这里注意,参数要和类里面的委托一致
{
Response.Write("title has changed as " + title);
}
}
public class test
{
private string _title, _price;
public string title
{
set
{
_title = value;
event_titleChange(value);//触发事件,注意有一个参数.这里能执行的必须是事件,而不是委托
}
get { return _title; }
}
public string price
{
set { _price = value; }
get { return _price; }
}
public delegate void title_change(string title);//声明一个委托,而且带了一个参数
public event title_change event_titleChange;//声明一个事件,处理委托,指定委托类型
}
--------------------编程问答-------------------- 动态调用方法 比如说事件就是特殊的委托 --------------------编程问答-------------------- 委托其实蛮重要的,设计模式中会提到的.
因为你用了委托,可以在子类中来实现,而不必在父类中去实现了.
这样会实现一定程度的解偶,而且也可以更加强的灵活性.
其实我们使用委托,说白了就是让子类来决定需要调用甚么函数来实现,而父类关心的只是需要传甚么
参数给子类就好了.
委托是很重要的.
补充:.NET技术 , ASP.NET