Action Vs事件Action
是
public event Action delt = () => { Console.WriteLine("Information"); };
一个重载版本
Action delg = (a, b) => { Console.WriteLine( a + b); }; ?
我的意思是Action delegate是“事件动作”的重载版本?
它不称为过载。
基本上,有一组类型,声明如下:
namespace System { delegate void Action(); delegate void Action(T a); delegate void Action(T1 a1, T2 a2); ... }
它们中的每一种都是不同的类型,独立于其他类型。 当您尝试通过类型名称后面的<>
的存在或不存在以及<>
的类型参数的数量来引用它时,编译器知道您的意思。
event
完全是另一回事,并没有发挥任何作用。 如果您对事件和委托之间的区别感到困惑,请参阅以下两个问题: 1 2
该事件不是“Action”,它被称为’delt’,它有一个Action类型的EventHandler委托。 通常,您希望您的事件具有符合标准事件模型的EvenHandler(例如MyHandler(Object sender,InheritsFromEventArgs参数))
Action和Action <>是委托类型,作为System命名空间的一部分存在。
严格来说,它们并不等同。 第一个event
向匿名函数分配event
,而第二个event
声明匿名函数。 像属性一样的事件在CLR中具有特殊含义,并遵循一些设计准则 。