委托和事件没有可比性:
1,因为委托是类型,事件是对象;
2,因为对于事件来讲,外部只能“注册自己+=、注销自己-=”,外界不可以注销其他的注册者,外界不可以主动触发事件,因此如果用Delegate就没法进行上面的控制,因此诞生了事件这种语法。
3,事件只能add、remove自己,不能赋值。事件只能+=、-=,不能=、不能外部触发事件。我写篇笔记你看看就明白了。
4,委托第一次用的“=”,是赋值的语法;第二次,用的是“+=”,是绑定的语法。如果第一次就使用“+=”,将出现“使用了未赋值的局部变量”的编译错误。
因为委托是类型,要用必须先实例化或赋值。
static void Main(string[] args)
{
GreetingDelegate delegate1;
delegate1 = EnglishGreeting;
delegate1 += ChineseGreeting;
delegate1("Liker");
Console.ReadLine();