0

我有一个数组 s[],我将其设置为:

    string [] s;
    s = data.Split(',');

在我可以使用 foreach 从 s 获取元素之后:

foreach (string c in s)
                    {
                        list.Items.Add(c);  
                    }

但我想将 c 的序列写到 c 值附近,即它将显示在列表中:

0 hello
1 world
2 earth

我没有在foreach中使用计数器,还有其他方法吗?

4

3 回答 3

3

你必须使用计数器。您可以在 foreach 中使用一个,或者使用for循环并使用它的计数器。

编辑:好吧,如果你从一个空列表开始,你可以在循环中使用list.Items.Count来打印列表中项目的当前计数,尽管这确实不是一个好方法。

// ugly
foreach (string c in s)
{
    list.Items.Add(list.Items.Count + " " + c);  
}
于 2013-05-02T14:55:05.683 回答
3

显而易见的事情是使用常规循环:

for (int i = 0; i < c.Length; i++) {
  list.Items.Add(i.ToString() + " " + c[i]);
}

如果您绝对想使用foreach并且没有计数器变量,则可以使用Select将每个字符串与其索引捆绑在一起:

foreach (var c in s.Select((str, i) => new { Value = str, Index = i })) {
  list.Items.Add(c.Index.ToString() + " " + c.Value);
}
于 2013-05-02T14:58:16.447 回答
0

不,给定您的代码没有其他方法。

要么你这样做:

 string [] s= {"0 Hello","1 World", "2 earth"};
 //your simple foreach loop

或者你这样做:

int counter=0;
foreach (string c in s)
{
    list.Items.Add(counter++ + " " + c);  
}

或更改您的代码,使用 for 循环

foreach (int i=0;i<s.Length;i++)
{
    list.Items.Add(i + " " + c[i]);  
}
于 2013-05-02T14:56:50.360 回答