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);

这表示这test是一个函数,它接受两个列表并将函数从字符串返回到对象。列表是lsfn。所以fnis的类型List<object>,这不是可以调用的东西。

也许您应该在此处描述您要执行的操作,因为从代码中根本不清楚。

它假设收到 aList<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的类型和lsisList<object>的类型。因此,当被调用时,它将按照.fnFunc<string, List<object>>fnList<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 回答