---------------------- <a href="http://edu.csdn.net"target="blank">ASP.Net+Android+IO开发S</a>、<a href="http://edu.csdn.net"target="blank">.Net培训</a>、期待与您交流! ----------------------
---------------------- <a href="http://edu.csdn.net"target="blank">ASP.Net+Android+IOS开发</a>、<a href="http://edu.csdn.net"target="blank">.Net培训</a>、期待与您交流! ----------------------
详细请查看:<a href="http://edu.csdn.net" target="blank"> http://edu.csdn.net </a>
//定义委托和定义方法类似,区别是加个delegate.去掉方法体,只写方法签名.
public delegate string SayHi(string name);
//委托可以像普通变量一样使用.区别在于可以把多个方法赋给委托.
public SayHi dlgt1, dlgt2;
声明委托必须要跟方法的参数和返回类型一样。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ConsoleApplication10
{
class Program
{
static void Main(string[] args)
{
Program p = new Program();
DelGat dl = new DelGat();
dl.StartDeGte(p.SeHell);//把方法名传给 StartDeGte
dl.StartDeGte(p.YuDong);
Console.ReadKey();
}
public void SeHell()
{
Console.WriteLine("Hello!");
}
public void YuDong()
{
Console.WriteLine("打球");
}
}
class DelGat
{
public delegate void Dele();//声明一个委托
public void StartDeGte(Dele fangfa) //传一个委托的方法名进来
{
fangfa();//调用委托
}
}
}
输出结果:
Hello
打球
事件小例:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ConsoleApplication10
{
class Program
{
static void Main(string[] args)
{
Program p = new Program ();
DelGat dl = new DelGat();
dl.sj += p.SeHell;//把方法名添加到事件里去 触发事件
dl.sj += new DelGat.Dele(p.YuDong);//也可以这样把方法名给事件 触发事件
dl.sj -= p.SeHell;//把方法名从事件里取出来
dl.sj += p.YuDong;
dl.StartDeGte();//执行委托
Console.ReadKey();
}
public void SeHell()
{
Console.WriteLine("Hello!");
}
public void YuDong()
{
Console.WriteLine("打球");
}
}
class DelGat
{
public delegate void Dele();
public event Dele sj; //声明事件
public void StartDeGte()
{
if(sj!=null)
sj();//执行委托
}
}
}
输出结果:
打球
打球
---------------------- <a href="http://edu.csdn.net"target="blank">ASP.Net+Android+IOS开发</a>、<a href="http://edu.csdn.net"target="blank">.Net培训</a>、期待与您交流! ----------------------
详细请查看:<a href="http://edu.csdn.net" target="blank"> http://edu.csdn.net </a>