繁体   English   中英

我们如何通过输入数组索引到lambda表达式

[英]How do we index through an input array to a lambda expression

我对lambda表达式很陌生,并且正在尝试编写一个简单的程序来了解Func<>的用法,并且无法理解为什么我无法使用索引循环遍历输入数组?

class Program
{
    static void Main(string[] args)
    {
        int[] array = new int[4];
        array[0] = -1; array[1] = 2; array[2] = 3; array[3] = 8;

        Func<Array, int> DoSomething = inputarray =>
        {
            for (int i = 0; i < inputarray.Length; i++)
            {
                if (inputarray[i] > inputarray[i + 1])
                {
                    //;
                }

            }
            return 1;
        };

    }
}

这给出了一个错误的说法

无法将[]的索引应用于Array类型的表达式

我该如何解决? 基本上,我将如何遍历输入数组?

您需要在显示的示例中为Array提供类型。

尝试:

Func<int[], int> DoSomething

代替。

System.Array是所有数组的基类,例如int[] 它还实现了IList ,该IList允许按索引访问项目,但Item属性作为显式接口成员实现实现。 仅当Array实例强制转换为IList接口时,才可以使用它:

var list = (System.Collections.IList)inputarray;

现在,您可以使用索引器,但是它将返回对象,而不是整数,因此您不能在不进行强制转换的情况下使用following,因为无法将对象与>进行比较:

if (list[i] > list[i + 1])
{
    //;
}

我猜您想使用int[]

Func<int[], int> DoSomething = inputarray =>
// ...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM