0

混乱していますが、これを関数として呼び出せないのはなぜですか。また、これを関数として呼び出すにはどうすればよいですか。

Error   1   'fn' is a 'variable' but is used like a 'method'

ソース

Func<List<object>, List<object>, Func<string, object>> test;
test = (ls, fn) => fn(null);
4

4 に答える 4

11

よくわかりません。

うん。混乱を解消しましょう。

これの何が問題なのですか?

Func<List<object>, List<object>, Func<string, object>> test;
test = (ls, fn) => fn(null);

これは、test2 つのリストを取り、文字列からオブジェクトへの関数を返す関数であることを示しています。リストはlsfnです。したがって、の型はfnisList<object>であり、呼び出すことができるものではありません。

コードからはまったく明確ではないため、ここで何をしようとしているのかを説明する必要があります。

を受け取り、List<object>返すFunc<string, object>ことを想定していますList<object>

その関数を呼び出しList<object>てバックを取得したいので、それは正しくないと思いますが、 a は をFunc<string, object>返しますobject

おそらくあなたが書きたかったのは

Func<List<object>, Func<string, List<object>>, List<object>> test;
test = (ls, fn) => fn(null);

これでis の型とlsisList<object>の型fnですFunc<string, List<object>>。そのため、fnが呼び出されると、 でList<object>必要なように が返されtestます。

わかる?

Func<A, B, R>では、A と B がパラメーターの型で、R が戻り値の型であることを思い出してください。

于 2013-02-15T21:33:57.500 に答える
3

おそらく次のものが必要です

Func<List<object>, Func<string, List<object>>, List<object>> test;

また

Func<List<object>, Func<string, object>, object> test;

これが機能するために

test = (ls, fn) => fn(null);
于 2013-02-15T21:33:26.673 に答える
0

次のようなものが必要になる場合があります。

    static void Main(string[] args)
    {
        Func<List<object>, List<object>, Func<string, object>> test = Test;

    }

    private static Func<string, object> Test(List<object> objects, List<object> list)
    {
        throw new NotImplementedException();
    }
于 2013-02-15T21:36:00.977 に答える
0

私はあなたが何を望んでいるのかわかりませんが、これはコンパイルして動作します:

public void SomeMethod()
{
    Func<List<object>, List<object>, Func<string, object>> test = (a, b) => 
    {
        a = b;
        return AnotherMethod;
    };
}

public object AnotherMethod(string value)
{
    return (object)value;
}
于 2013-02-15T21:42:57.080 に答える