【问题标题】:Reusable Control可重用控制
【发布时间】:2012-05-10 22:12:45
【问题描述】:

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

【问题讨论】:

  • 您的问题非常广泛和模糊。我猜你正在寻找的术语是“代表”和“事件处理程序”。考虑阅读这些内容,然后提出更具体的问题。
  • 谢谢鲍勃。我会调查的。如果我可以将函数传递给用户控件中的私有变量。那我就好了。再次感谢。

标签: c# asp.net user-controls parameter-passing


【解决方案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);

【讨论】:

    猜你喜欢
    • 2017-05-27
    • 2015-12-17
    • 2016-04-17
    • 2014-05-21
    • 2013-12-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-29
    • 1970-01-01
    相关资源
    最近更新 更多