C# 面试题 目录

C# 中委托 (delegate) 的概念和用法

推荐答案

-- -------------------- ---- -------
-- ------
------ -------- ---- ----------------- ---------

-- ----
------ ----- -------
-
    ------ ------ ---- ------------- -----
    -
        -- ----------
        ---------- --- - --- ------------------------

        -- ----
        ----------- ---------
    -

    -- --------------
    ------ ------ ---- ------------------ --------
    -
        ---------------------------
    -
-

本题详细解读

委托的概念

在C#中,委托(Delegate)是一种类型安全的函数指针,它允许你将方法作为参数传递或存储。委托可以指向一个或多个方法,并且可以在运行时动态地改变所指向的方法。委托的主要用途是实现事件和回调方法。

委托的声明

委托的声明类似于方法的声明,但没有方法体。它定义了委托可以指向的方法的签名(即参数类型和返回类型)。例如:

这个委托可以指向任何接受一个string类型参数并返回void的方法。

委托的实例化与使用

要使用委托,首先需要实例化它,并将一个与委托签名匹配的方法绑定到该委托上。然后可以通过调用委托来执行绑定的方法。

在这个例子中,ShowMessage方法的签名与MyDelegate委托的签名匹配,因此可以将ShowMessage方法绑定到MyDelegate委托上。

多播委托

委托还可以指向多个方法,这种委托称为多播委托。多播委托允许你将多个方法绑定到同一个委托上,并在调用委托时依次执行这些方法。

在这个例子中,multiDel委托同时绑定了ShowMessageAnotherMethod两个方法,调用multiDel时会依次执行这两个方法。

匿名方法与Lambda表达式

C#还支持使用匿名方法和Lambda表达式来简化委托的使用。例如:

这些特性使得委托的使用更加灵活和简洁。

委托的应用场景

委托在C#中广泛应用于事件处理、回调方法、异步编程等场景。例如,在Windows Forms或WPF中,按钮的点击事件就是通过委托来实现的。

在这个例子中,EventHandler是一个预定义的委托类型,用于处理按钮的点击事件。

纠错
反馈