迭代一个数组

Rya*_*yan 2 c# arrays loops

迭代虽然数组不是问题,但是如果我只想在调用方法时才增加?

我甚至不确定这是否会起作用,但有更简单的方法可以做到这一点

    int counter;
    string[] myArray = {"foo", "bar", "something", "else", "here"};

    private string GetNext()
    {
        string myValue = string.Empty;

        if (counter < myArray.Length) {
            myValue = myArray [counter];
        } else {
            counter = 0;
        }

        counter++;

        return myValue;
    }
Run Code Online (Sandbox Code Playgroud)

Sco*_*ain 5

你想要的是一个迭代器

private IEnumerable<String> myEnumarable()
{
    foreach(string i in myArray)
    {
       yield return i;
    }
}
Run Code Online (Sandbox Code Playgroud)

但是只需调用myArray.GetEnumerator(); 具有相同的效果.

你用它

string[] myArray = { "foo", "bar", "something", "else", "here" };
IEnumerator<String> myEnum;

private string GetNext() //Assumes there will be allways at least 1 element in myArray.
{
    if(myEnum == null)
       myEnum = myArray.GetEnnumerator();
    if(!myEnum.MoveNext())
    {
       myEnum.Reset();
       myEnum.MoveNext();
    }
    return myEnum.Current;
}
Run Code Online (Sandbox Code Playgroud)