把for循环改成foreach循环

int GetSeriesValue(Series series, double argument)
{
for (int i = 0; i < series.Points.Count - 1; i++)
{
if (series.Points[i].NumericalArgument == argument)
return i;
else if (series.Points[i].NumericalArgument < argument && series.Points[i + 1].NumericalArgument > argument)
{
double interval1 = argument - series.Points[i].NumericalArgument;
double interval2 = series.Points[i + 1].NumericalArgument - argument;
return interval1 <= interval2 ? i : i + 1;
}
}
return 0;
}

 int GetSeriesValue(Series series, double argument)
{
foreach (var item in series.Points.Zip(series.Points.Skip(1), (x, y) => new { x, y }))
{
if (item.x.NumericalArgument == argument)
return i;
else if (item.x.NumericalArgument < argument && item.y.NumericalArgument > argument)
{
double interval1 = argument - item.x.NumericalArgument;
double interval2 = item.y.NumericalArgument - argument;
return interval1 <= interval2 ? i : i + 1;
}
}
return 0;
}

其实你的代码用不着foreach

再给你一个写法

foreach (int i in IEnumerable.Range(0, series.Points.Count))
{
...
}

作为对比:
https://ideone.com/V8ldvG

 using System;
using System.Linq;

public class Test
{
    public static void Main()
    {
        // your code goes here
        int[] arr = {1,2,3,4,5};
        for (int i = 0; i < arr.Length - 1; i++)
        {
            Console.WriteLine("i={0}, arr[i]={1}, arr[i+1]={2}", i, arr[i], arr[i + 1]);
        }
    }
}

这是按照你原来的方式编写的程序,结果一样

我编写了一个简化的代码,通过在线编译和运行验证。

https://ideone.com/tiOlag

 using System;
using System.Linq;

public class Test
{
    public static void Main()
    {
        // your code goes here
        int[] arr = {1,2,3,4,5};
        foreach (var item in arr.Zip(arr.Skip(1), (x, y) => new { x, y }).Select((x, i) => new { x.x, x.y, i}))
        {
            Console.WriteLine("i={0}, arr[i]={1}, arr[i+1]={2}", item.i, item.x, item.y);
        }
    }
}

运行结果:
i=0, arr[i]=1, arr[i+1]=2
i=1, arr[i]=2, arr[i+1]=3
i=2, arr[i]=3, arr[i+1]=4
i=3, arr[i]=4, arr[i+1]=5

这是另一个版本,用Range实现的
https://ideone.com/3y2nFR

 using System;
using System.Linq;

public class Test
{
    public static void Main()
    {
        // your code goes here
        int[] arr = {1,2,3,4,5};
        foreach (int i in Enumerable.Range(0, arr.Length - 1))
        {
            Console.WriteLine("i={0}, arr[i]={1}, arr[i+1]={2}", i, arr[i], arr[i + 1]);
        }
    }
}