我很困惑,为什么我不能将其称为函数,我该如何让自己将其称为函数?
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
是一个函数,它接受两个列表并将函数从字符串返回到对象。列表是ls
和fn
。所以fn
is的类型List<object>
,这不是可以调用的东西。
也许您应该在此处描述您要执行的操作,因为从代码中根本不清楚。
它假设收到 a
List<object>
并Func<string, object>
返回List<object>
我认为这是不对的,因为你想调用那个函数并得到一个List<object>
返回,但是 aFunc<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;
}