C#でのeventargsの使用方法は何ですか?
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条件演算子(?.)を使用して、可能な空の参照例外を回避できます。