抱歉,您的浏览器无法访问本站
本页面需要浏览器支持(启用)JavaScript
了解详情 >

在C#中,委托是一种类型,它允许您将方法作为参数传递。委托可以看作是一个函数指针,它指向一个方法,使得可以在程序运行时动态地调用该方法。C#中的事件是基于委托的,它允许您在某些情况下触发特定方法的执行。

委托

委托是C#中的一个重要概念,它允许您将方法作为参数传递给其他方法。委托定义了一个函数签名,指定了方法可以接受的参数和返回值类型。当您创建一个委托对象并将方法作为参数传递给它时,该委托对象将包含对该方法的引用。您可以将这个委托对象传递给其他方法,并且这些方法可以调用委托所引用的方法。

以下是一个简单的示例,演示如何创建和使用委托:

delegate int MathOperation(int a, int b);

class Calculator
{
    public static int Add(int a, int b)
    {
        return a + b;
    }

    public static int Subtract(int a, int b)
    {
        return a - b;
    }
}

class Program
{
    static void Main(string[] args)
    {
        MathOperation add = new MathOperation(Calculator.Add);
        MathOperation subtract = new MathOperation(Calculator.Subtract);

        int result1 = add(5, 3);
        int result2 = subtract(5, 3);

        Console.WriteLine("Addition result: {0}", result1);
        Console.WriteLine("Subtraction result: {0}", result2);
    }
}

在这个示例中,我们定义了一个委托类型MathOperation,它接受两个整数作为参数并返回一个整数。然后我们定义了两个静态方法AddSubtract,这些方法符合我们定义的委托类型。接下来,我们创建了两个委托对象addsubtract,并将它们分别初始化为指向Calculator.AddCalculator.Subtract方法。最后,我们使用这些委托对象来调用这些方法,并打印它们的结果。

事件

事件是C#中的另一个重要概念,它是基于委托的。事件是一种机制,允许您将方法与特定的条件关联起来。当该条件被触发时,事件将调用关联的方法。通常,事件是作为类的成员定义的,这样其他对象可以注册事件并接收事件的通知。

以下是一个简单的示例,演示如何定义和使用事件:

delegate void EventHandler();

class Button
{
    public event EventHandler Click;

    public void OnClick()
    {
        if (Click != null)
        {
            Click();
        }
    }
}

class Program
{
    static void Main(string[] args)
    {
        Button button