在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條件運算符(?.)來避免可能的空引用異常。