eventOne(带关键字“event”)和 eventTwo(不带关键字)有什么区别?
class Program
{
public event EventHandler eventOne;
public EventHandler eventTwo;
public void RaiseOne()
{
if (eventOne != null)
eventOne(this, EventArgs.Empty);
}
public void RaiseTwo()
{
if (eventTwo != null)
eventTwo(this, EventArgs.Empty);
}
static void Main(string[] args)
{
var p = new Program();
p.eventOne += (s, e) => Console.WriteLine("One");
p.eventTwo += (s, e) => Console.WriteLine("Two");
p.RaiseOne();
p.RaiseTwo();
}
}
最佳答案
eventOne
是由EventHandler
类型的私有(private)字段支持的公共(public)事件。eventTwo
是EventHandler
类型的公共(public)字段。
基本上,事件仅封装了“订阅”和“取消订阅”的概念,就像属性仅封装了“获取”和“设置”的概念而不是实际存储一样。 (就 CLR 而言,事件也可以公开“raise”方法,但 C# 从未使用过此方法。忽略它。)
参见 my article on events ( alternate link ) 了解更多关于委托(delegate)和事件之间的区别。
关于c# - 关键字 'event' 在 C# 中是可选的吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/711732/