第一种情况:
public delegate void MyDelegate();
public class MyClass1
{
public event MyDelegate myDelegate = null;
public void MyFun1()
{
Console.WriteLine("Test");
}
public void MyFun2()
{
myDelegate = new MyDelegate(MyFun1);
}
public void MyFun3()
{
myDelegate.Invoke();
}
}
MyClass1类内直接定义myDelegate成员,因此可以在MyClass1类内使用“=”操作myDelegate成员,也可以调用nvoke函数,这是合理的。
第二种情况:
public delegate void MyDelegate();
public class MyClass1
{
public event MyDelegate myDelegate = null;
}
public class MyClass2 : MyClass1
{
public void MyFun1()
{
Console.WriteLine("Test");
}
public void MyFun2()
{
myDelegate = new MyDelegate(MyFun1); //报错
}
public void MyFun3()
{
myDelegate.Invoke(); //报错
}
}
MyClass2类内没有直接定义myDelegate成员,而是通过继承MyClass1类来继承myDelegate成员。此时却不能在MyClass2类内使用“=”操作myDelegate成员,也不能调用nvoke函数,否则编译器会报错。两种情况同样都拥有事件成员myDelegate,为何有此差别。