事件
关键字:event
声明语法:访问修饰符 event 委托类型 事件名
作用
防止外部随意置空委托
防止外部随意调用委托
事件相当于对委托进行一次封装 让委托更加安全
注意
事件不能在 类外部 赋值
事件不能在 类外部 调用
事件不能作为临时变量在函数中使用
事件只能作为类、接口、结构体的成员
只能使用+=添加事件中的函数
-=去除事件中的函数
解决方法:在类内部封装一个公有方法 调用事件
例子
class TestEvent
{
public delegate void Testevent();
public Testevent del;//委托变量
//事件声明语法
//访问修饰符 event 委托类型 事件名
public event Testevent Tev;//事件变量
public event Action Te;
public TestEvent()//构造函数
{
del = Test;//委托
//事件和委托的使用方法一样
//区别:事件不能在类外部 赋值
//事件不能在类外部 调用
Te = Test;//事件
Te += Test;
Te -= Test;
Te();
Te.Invoke();
Te=null;
}
private void Test()
{
Console.WriteLine("委托和事件");
}
}
class Program
{
static void Main(string[] args)
{
TestEvent test = new TestEvent();
test.del.Invoke();//使用委托
test.del = null;//委托赋值
//test.Te = null; //事件不能在 类外部 赋值
//test.Te = test.Te + Et;
// test.Te();//事件不能在 类外部 调用
//事件不能作为临时变量在函数中使用
//event Action Ev;
}
static void Et()
{
Console.WriteLine("测试");
}
}