正如 jimmyzhang所说的:较好地理解委托和事件对很多接触C#时间不长的人来说并不容易。它们就像是一道槛儿,过了这个槛的人,觉得真是太容易了,而没有过去的人每次见到委托和事件就觉得心里别(biè)得慌,混身不自在。
总结:
(1)委托时一个类,它定义了方法的类型,使得可以将方法当做另外一个方法的参数来进行传递,这种将方法动态的付给参数的做法,可以避免在程序中大量使用if---else switch等语句,同时使程序有很好的可扩展性。
(2)使用委托可以将多个方法绑定到同一个委托变量,当调用此变量时,可以依次调用所有绑定的方法。
(3)事件其实没什么不好理解的,声明一个事件不过类似声明了一个封装的委托类型的变量而已。
下面贴个简单的例子,大家体会一下吧:不要认为看过了就懂了,动手亲自去实践一下吧。
public delegate void wenhaodelegate(string name);
public class wenhao
{
public event wenhaodelegate delegate1;
public void iwenhao(string name)
{
if (delegate1 != null)//如果有方法注册到委托变量
{
delegate1(name);//通过委托调用方法
}
}
}
class Program
{
public static void english(string name)
{
Console.WriteLine("morning:" + name);
}
public static void chinese(string name)
{
Console.WriteLine("早上好:" + name);
Console.Read();
}
static void Main(string[] args)
{
wenhao mywenhao = new wenhao();
mywenhao.delegate1 += english;
mywenhao.delegate1 += chinese;
mywenhao.iwenhao("段英杰");
}
}
public class wenhao
{
public event wenhaodelegate delegate1;
public void iwenhao(string name)
{
if (delegate1 != null)//如果有方法注册到委托变量
{
delegate1(name);//通过委托调用方法
}
}
}
class Program
{
public static void english(string name)
{
Console.WriteLine("morning:" + name);
}
public static void chinese(string name)
{
Console.WriteLine("早上好:" + name);
Console.Read();
}
static void Main(string[] args)
{
wenhao mywenhao = new wenhao();
mywenhao.delegate1 += english;
mywenhao.delegate1 += chinese;
mywenhao.iwenhao("段英杰");
}
}