C# event关键字的作用

最近在学习C#,看到了event关键字,刚开始很疑惑,感觉event可有可无,后来经过试验,发现event还是有比较重要的作用的。
1.声明了event之后,事件在类外只能用 +=,-=来修改,不能用 = 赋值,而委托没有这个限制
2.声明了event之后,事件不能在类外直接调用,而委托可以
举个例子:

class Program
{
		class Test
		{
				public Action _myDelegate;		//声明了一个委托
				public event Action _myEvent;		//声明了一个事件
		
				public Test()
				{
						//在类内,事件和委托都是可以直接用 “=” 赋值的
						_myDelegate= Print;
						_myEvent= Print;
						//在类内,委托和事件都是可以调用的
						_myDelegate();
						_myEvent();
				}
		
				public void Print()
				{
				}
		}
		
		static void Main(string[] args)
		{
				Test test = new Test();
				
				test._myDelegate();			//委托可以直接调用
				test._myEvent();			//这句编译会报错,事件不能直接在类外调用;

				test._myDelegate= null;		//委托可以在类外直接赋值
				test._myEvent= null;		//这句编译会报错,事件不能在类外直接赋值,只能通过 "+= ,-="来修改
		}
}

事实上,加了event就是限制了delegate的访问,其余用法都是相同的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值