委托可以把一个方法作为参数代入另一个方法。委托可以理解为指向一个函数的指针。
简单案例:文本框中只能输入数字,否则提示错误
在项目中添加Web窗体和Web用户控件。
Web用户控件前台样式:
后台代码:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
namespace 委托的简单应用
{
public partial class WebUserControl1 : System.Web.UI.UserControl
{
public Number num;
protected void Page_Load(object sender, EventArgs e)
{
}
protected void Button1_Click(object sender, EventArgs e)
{
int result;
if (int.TryParse(TextBox1.Text,out result)==false)
{
if (num!=null)
{
this.Label1.Text = num();
}
}
}
//定义的委托
public delegate string Number();
}
}
然后在Web船体中引用Web用户控件,在设计页面拖进Web用户控件
Web船体的后台代码:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
namespace 委托的简单应用
{
public partial class WebForm1 : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
#region 写在if当中是不正确的,只会加载页面的时候执行一次
/* if (!IsPostBack)
{
WebUserControl11.num = Error3;
}*/
#endregion
//利用委托实现效果
WebUserControl11.num = Error3;
}
//下面三个定义的是方法(函数及提示的错误信息)
// P.S:三个函数方法可以直接写在Web用户控件里边
private static string Error1()
{
return "输入不正确";
}
private static string Error2()
{
return "请输入数字";
}
private static string Error3()
{
return "输入的字符不是数字";
}
}
}