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的访问,其余用法都是相同的。

你可能感兴趣的:(C# event关键字的作用)