我很困惑,为什么我不能将其称为函数,我如何让自己将其称为函数?
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);
答案 0 :(得分:11)
我很困惑。
是的。让我们不相信你。
这有什么问题?
Func<List<object>, List<object>, Func<string, object>> test;
test = (ls, fn) => fn(null);
这表示test
是一个函数,它接受两个列表并从一个字符串返回一个函数。列表为ls
和fn
。所以fn
的类型是List<object>
,这不是可以调用的东西。
也许您应该描述一下您在这里要做的事情,因为代码中并不清楚。
它假设接收
List<object>
,Func<string, object>
并返回List<object>
我认为这不对,因为你想调用该函数并返回List<object>
,但Func<string, object>
会返回object
}。
也许你打算写的是
Func<List<object>, Func<string, List<object>>, List<object>> test;
test = (ls, fn) => fn(null);
现在ls
的类型为List<object>
,fn
的类型为Func<string, List<object>>
。因此,在调用fn
时,它会根据List<object>
的要求返回test
。
有意义吗?
请记住,在Func<A, B, R>
中,A和B是参数类型,R是返回类型。
答案 1 :(得分:3)
您可能需要以下
Func<List<object>, Func<string, List<object>>, List<object>> test;
或
Func<List<object>, Func<string, object>, object> test;
让它工作
test = (ls, fn) => fn(null);
答案 2 :(得分: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();
}
答案 3 :(得分: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;
}