[英]Using the input of a Lambda expression as an index for a separate array in c#
[英]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.