2012-05-10 35 views
-3

私はユーザーコントロールを作成したいと思っていましたが、私がする前にいくつかのやり方を知る必要があります。メソッドに関数(Link)を渡すことは可能です。関数型の変数を設定することは可能ですか?たとえば、ある関数でGetData関数を呼び出す必要があるユーザーコントロールがあります。各GetDataルーチンは異なるので、aspx.csページからその関数を渡すことが可能かどうか疑問に思っていましたか?再利用可能なコントロール

+2

あなたの質問は非常に広く曖昧です。私はあなたが探している用語を "デリゲート"と "イベントハンドラ"と推測しています。これらについて読んだり、より具体的な質問をしてください。 –

+0

ありがとうございました。私はそれを調べます。私は関数をユーザーコントロールのプライベート変数に渡すことができます。それから、私は良いだろう。再度、感謝します。 – MindGame

答えて

1

.NET Frameworkライブラリは、便利なジェネリックデリゲート(または呼び出すときには「関数型」)を定義します。あなたはこの

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); 
    } 
} 

のようにデリゲートを受け取るメソッドを定義することができ、戻り値には戻り値

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

を持っていない

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

機能デリゲートを持っている機能を委任適切なメソッドまたはラムダ式を渡すことによって呼び出すことができます。

DrawFunction(Square, 0.0, 10.0); 

あなたが得る(ここでは、このメソッドを呼び出すにしたくないので、かっこ()Square後に不足していることに注意してください)あなたが呼び出しを行うことができます

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

この宣言を使用して

ラムダ式と同じ結果

DrawFunction(x => x*x, 0.0, 10.0); 
関連する問題