从C#中的子数组中获取最大值

时间:2017-01-02 08:27:53

标签: c#

我有一个问题,假设我有一个数组:

var array = new int[] { 7, 16, 4, 9, 865, 3, -8, 56};

我想从索引获取最大值(比如说索引4),我该怎么做? 是否有类似的东西:

array.fromIndex(4).max()

另外,我试着变得简单并且做了

(array + 4).max()

但收到错误

  

"运营商' +'无法应用"

为什么?

谢谢!

1 个答案:

答案 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();