温馨提示×

C#中eventargs的用法是什么

c#
小亿
261
2023-12-23 14:48:20
栏目: 编程语言

在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条件运算符(?.)来避免可能的空引用异常。

0