EventArgs中的静态只读“ Empty”的目的是什么

时间:2019-05-31 06:47:43

标签: c# oop events

我是C#的新手,只是有关EventArgs类的问题。我们知道定义是:

public class EventArgs
{
   public static readonly EventArgs Empty;
   public EventArgs();
}

我想用途之一是当您不关心传递自定义信息时

public event EventHandler<EventArgs> TestHappening;

private void MyMethod()
{
    TestHappening( this, EventArgs.Empty );
}

但是我们不能通过使用以下方法实现相同的目标:

 TestHappening( this, new EventArgs() );

2 个答案:

答案 0 :(得分:2)

出于两个原因,最好使用EventArgs.Empty

  1. 检查参数是否为空

    EventArgs newArgs = new EventArgs();
    EventArgs emptyArgs = EventArgs.Empty;
    Console.WriteLine(newArgs == EventArgs.Empty); // false
    Console.WriteLine(emptyArgs == EventArgs.Empty); // true
    
  2. 没有额外的内存分配,因为您实际上使用了相同的类实例。

答案 1 :(得分:0)

EventArgs.Empty只是定义一个不带数据的EventArgs实例。在C#中,有很多具有定义属性的类来声明此类的状态或种类或值,以支持仅使用C#的人员。 string.Emptyint.MaxValue等就是示例