2

私のコードには、次のように宣言された Func があります。

Func<string, int, bool> Filter { get; set; }

Func のパラメーターである string 変数と int 変数にアクセスして、コードで使用するにはどうすればよいですか?

4

3 に答える 3

4

パラメータは、関数が呼び出されたときにのみ存在し、関数内でのみ使用できます。たとえば、次のようになります。

foo.Filter = (text, length) => text.Length > length;

bool longer = foo.Filter("yes this is long", 5);

ここで、値 "yes this is long" は、デリゲートが実行されている間textのパラメーターの値であり、同様に、値 5 は、実行中のパラメーターの値です。それ以外の場合、それは無意味な概念です。length

あなたは本当に何を達成しようとしていますか?より多くのコンテキストを提供していただければ、ほぼ確実に、より適切なサポートを提供できます。

于 2012-06-16T21:19:55.367 に答える
4

匿名の方法を使用できます。

Filter = (string s, int i) => {
    // use s and i here and return a boolean
};

または標準的な方法:

public bool Foo(string s, int i)
{
    // use s and i here and return a boolean
}

次に、Filter プロパティをこのメソッドに割り当てることができます。

Filter = Foo;
于 2012-06-16T21:19:57.840 に答える
1

こちらのサンプルを参照してください - http://www.dotnetperls.com/func

using System;

class Program
{
    static void Main()
    {
    //
    // Create a Func instance that has one parameter and one return value.
    // ... Parameter is an integer, result value is a string.
    //
    Func<int, string> func1 = (x) => string.Format("string = {0}", x);
    //
    // Func instance with two parameters and one result.
    // ... Receives bool and int, returns string.
    //
    Func<bool, int, string> func2 = (b, x) =>
        string.Format("string = {0} and {1}", b, x);
    //
    // Func instance that has no parameters and one result value.
    //
    Func<double> func3 = () => Math.PI / 2;

    //
    // Call the Invoke instance method on the anonymous functions.
    //
    Console.WriteLine(func1.Invoke(5));
    Console.WriteLine(func2.Invoke(true, 10));
    Console.WriteLine(func3.Invoke());
    }
}
于 2012-06-16T21:20:16.610 に答える