在C#中,EventArgs是一个通用的事件参数类,用于传递事件的相关信息给事件处理程序。它是System.EventArgs类的派生类。
EventArgs类本身没有任何属性或方法,它主要用作一个基类,供其他特定事件参数类继承和扩展使用。通过继承EventArgs类,可以为特定的事件定义自定义的事件参数,以便在事件发生时传递相关的数据。
下面是使用EventArgs的示例:
// 自定义事件参数类
public class MyEventArgs : EventArgs
{
public string Message { get; set; }
public int Value { get; set; }
public MyEventArgs(string message, int value)
{
Message = message;
Value = value;
}
}
public class MyClass
{
// 定义事件并指定事件参数类型为MyEventArgs
public event EventHandler<MyEventArgs> MyEvent;
public void DoSomething()
{
// 触发事件并传递事件参数
MyEvent?.Invoke(this, new MyEventArgs("Hello", 123));
}
}
public class Program
{
public static void Main()
{
MyClass myObject = new MyClass();
myObject.MyEvent += MyEventHandler; // 注册事件处理程序
myObject.DoSomething(); // 触发事件
Console.ReadLine();
}
// 事件处理程序
public static void MyEventHandler(object sender, MyEventArgs e)
{
Console.WriteLine(e.Message + " World! " + e.Value);
}
}
在上面的示例中,MyEventArgs类继承自EventArgs,并添加了Message和Value属性。MyClass类定义了一个名为MyEvent的事件,并将事件参数类型指定为MyEventArgs。通过调用MyEvent.Invoke方法来触发事件,并传递一个新的MyEventArgs实例作为事件参数。
在Main方法中,首先创建一个MyClass对象,并注册一个事件处理程序MyEventHandler。然后调用DoSomething方法触发事件。当事件触发时,事件处理程序MyEventHandler会被调用,并打印出事件参数中的相关信息。
注意:在C# 6及以上版本中,可以使用null条件运算符(?.)来避免可能的空引用异常。