我一直想创建一个用户控件,但在我这样做之前,我需要知道如何做一些事情,或者即使它可能。我知道可以将方法传递给函数(Link)。是否可以设置函数类型的变量?例如,我有一个用户控件,我需要在一个函数中调用 GetData 函数。每个 GetData 例程都不同,所以我想知道是否可以从 aspx.cs 页面传递该函数?
问问题
299 次
1 回答
1
.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);
于 2012-05-10T23:21:09.447 回答