使用c#选择数组中的下一个子项

本文关键字:下一个 选择 数组 使用 | 更新日期: 2023-09-27 17:49:18

我有一个数组,

 string [] myString = new string["2","1","3","2","1","2"];

我希望当我选择一个孩子时,我会得到下一个孩子的值,也就是说,当我选择第一个"2"时,我将得到第二个"1"的值。。。当我选择第二个"1"时,我会得到第三个"3"的值。。。等等我尝试使用索引方法,这是我的代码:

foreach (var index in myString){
int myindex = myString.indexOf(index);
}

嗯,这不是正确的方法。。。有人知道怎么做吗?感谢

使用c#选择数组中的下一个子项

因此,我假设您想要一个函数,该函数将接受string[]int,并返回下一个元素(或第一个元素-如果int值表示最后一个元素(。像这样的东西会起作用。。。(注意,我只是在这里抛出了代码,没有尝试编译或测试,所以可能需要一两个调整(。

public string GetNextElement(string[] strArray, int index)
{
    if ((index > strArray.Length -1) || (index < 0))
       throw new Exception("Invalid index");
    else if (index == strArray.Length -1)
       index = 0;
    else
       index++;
    return strArray[index];
}

对于一个列表,你会有类似的东西(假设你总是有一个string对象的列表,否则使用ToString()(

    public string GetNextElement(IList<string> list, int index)
    {
        if ((index > list.Count - 1) || (index < 0))
            throw new Exception("Invalid index");
        else if (index == list.Count - 1)
            index = 0;
        else
            index++;
        return list[index];
    }

如果我理解正确,这应该会奏效:

string ChildValue(string[] myString, int which)
{
    if (which < myString.GetUpperBound(0))
        return myString[which + 1];
    else
        return myString[0];
}

你可以像这样从任何地方调用这个函数,就像这样(将字符串数组和所需的索引作为参数传递:

public void whatever()
{
    string[] myString = {"2", "1", "3", "2", "1", "2"};
    var selectedChildValue = ChildValue(myString, 3);
}

作为返回值,您将得到元素4的值。

for( int i = 1; i <= myString.Length; i++ )
{
   string s = i == (myString.Length -1) ? myString[0]: myString[i] ;
}
for( int i = 0; i < myString.Length - 1; ++i )
{
   string s = myString[i+1];
}

如果我正确理解你

编辑:将+1添加到循环内的索引

如果您想获得最后一个索引的第一个元素,就可以这样做:

string[] myString = new string[] { "2", "1", "3", "2", "1", "2" };
for (int i = 0; i < myString.Length; ++i)
{           
    string s = i == myString.Length - 1 ? myString[0] :  myString[i + 1];
    Console.WriteLine(s);
}