可重复使用的控件

本文关键字:控件 | 更新日期: 2023-09-27 18:33:44

我一直想创建一个用户控件,但在我这样做之前,我需要知道如何做一些事情,或者即使可能的话。 我知道可以将方法传递给函数(链接)。 是否可以设置函数类型的变量? 例如,我有一个用户控件,在一个函数中我需要调用 GetData 函数。每个 GetData 例程都是不同的,所以我想知道是否可以从 aspx.cs 页面传入该函数?

可重复使用的控件

.NET Framework 库定义了方便的泛型委托(或你称之为"函数类型")。具有返回值的函数委托

Func<Ret>
Func<Arg, Ret>
Func<Arg1, Arg2, Ret>
...

没有返回值的函数委托

Action<>
Action<Arg>
Action<Arg1, Arg2>
...

您可以定义一个接受委托的方法,

如下所示
void DrawFunction(Func<double, double> function, double x0, double x1)
{
    const double step = 0.1;
    for (x = x0; x <= x1; x += step) {
        double y = function(x);
        DrawPointAt(x, y);
    }
}

您可以通过向它传递适当的方法或使用 lambda 表达式来调用它。

使用此声明

public double Square(double x)
{
    return x*x;
}

你可以调用(请注意,Square后缺少括号(),因为我们不想在这里调用此方法)

DrawFunction(Square, 0.0, 10.0);

使用 lambda 表达式获得相同的结果

DrawFunction(x => x*x, 0.0, 10.0);