我有一个问题,假设我有一个数组:
var array = new int[] { 7, 16, 4, 9, 865, 3, -8, 56};
我想从索引获取最大值(比如说索引4),我该怎么做? 是否有类似的东西:
array.fromIndex(4).max()
另外,我试着变得简单并且做了
(array + 4).max()
但收到错误
"运营商' +'无法应用"
为什么?
谢谢!
答案 0 :(得分:4)
另外,我试着变得简单而且做到了
(array + 4).max()
但得到一个错误“运算符'+'无法应用”,为什么会这样?
在C#中array
不是你可以计算的指针。因此,未定义运算符+
来执行此类操作。
如果您想从某个索引开始搜索最大值,您可以跳过此时的所有值:
int maxValue = array.Skip(4).Max();
修改强> 灵感来自评论中@jdphenix的建议:
如果您希望对要搜索最大值的范围有更多控制权,那么Take
方法可能会有很大帮助。此组合允许您设置子数组的范围:
var array = new int[] { 7, 16, 4, 9, 865, 3, -8, 56 };
int startIndex = 4;
int numberOfElements = 3;
array.Skip(startIndex).Take(numberOfElements).Max();
如果要指定开始和结束索引,它将如下所示:
int startIndex = 4;
int endIndex = 7;
array.Skip(startIndex).Take(endIndex - startIndex).Max();