混乱していますが、これを関数として呼び出せないのはなぜですか。また、これを関数として呼び出すにはどうすればよいですか。
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);
混乱していますが、これを関数として呼び出せないのはなぜですか。また、これを関数として呼び出すにはどうすればよいですか。
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);
よくわかりません。
うん。混乱を解消しましょう。
これの何が問題なのですか?
Func<List<object>, List<object>, Func<string, object>> test;
test = (ls, fn) => fn(null);
これは、test
2 つのリストを取り、文字列からオブジェクトへの関数を返す関数であることを示しています。リストはls
とfn
です。したがって、の型はfn
isList<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 の型とls
isList<object>
の型fn
ですFunc<string, List<object>>
。そのため、fn
が呼び出されると、 でList<object>
必要なように が返されtest
ます。
わかる?
Func<A, B, R>
では、A と B がパラメーターの型で、R が戻り値の型であることを思い出してください。
おそらく次のものが必要です
Func<List<object>, Func<string, List<object>>, List<object>> test;
また
Func<List<object>, Func<string, object>, object> test;
これが機能するために
test = (ls, fn) => fn(null);
次のようなものが必要になる場合があります。
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();
}
私はあなたが何を望んでいるのかわかりませんが、これはコンパイルして動作します:
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;
}