ユーザーコントロールを作成したいと思っていますが、その前に、いくつかのことを行う方法、または可能かどうかを知る必要があります。メソッドを関数に渡すことができることを知っています(Link)。関数型の変数を設定することはできますか? たとえば、1 つの関数で GetData 関数を呼び出す必要があるユーザー コントロールがあります。各 GetData ルーチンは異なるため、その関数を aspx.cs ページから渡すことができるかどうか疑問に思っていましたか?
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);
}
}
適切なメソッドを渡すか、ラムダ式を使用して呼び出すことができます。
この宣言の使用
public double Square(double x)
{
return x*x;
}
Square
呼び出しを行うことができます (ここではこのメソッドを呼び出したくないため、括弧 () が後にないことに注意してください)。
DrawFunction(Square, 0.0, 10.0);
ラムダ式でも同じ結果が得られます
DrawFunction(x => x*x, 0.0, 10.0);
于 2012-05-10T23:21:09.447 に答える