我怎样才能获得列表元素

时间:2016-05-28 12:39:47

标签: c# arrays list

我有一个包含3个元素的数组,我使用for - 循环删除"1", "2"if - 条件始终为false。问题是什么?

string[] listCountAnwser = {"1", "2", "3"};
List<string> listCountAnwsers = new List<string>(listCountAnwser);
for (int i = 0; i < listCountAnwsers.Count; i++)
{
    if (Int32.Parse(listCountAnwsers[i]) < Int32.Parse(listCountAnwsers[i++]))
    {
        listCountAnwsers.Add(listCountAnwser[i]);
    }
}

2 个答案:

答案 0 :(得分:2)

有些事情引起了我的注意 首先,使用increment运算符是错误的。要确保运行此代码:

for (int i = 0; i < listCountAnwsers.Count; i++)
    Console.WriteLine(listCountAnwsers[i] + "\t" + listCountAnwsers[i++]);

输出将如下:

1    1
3    3

这就是为什么您的代码永远不会进入if条件的原因 另一个问题是你删除elemets。这需要更改列表的listCountAnwsers.Count属性。确保:

for (int i = 0; i < list.Length; i++)
{
    listCountAnwsers.Remove(listCountAnwsers[i]);
    Console.WriteLine(listCountAnwsers.Count);
}

输出

2
1

然后例外就像argument out of range一样。确实。当你尝试这样的事情时,你也可以得到这样的例外:

if (Int32.Parse(listCountAnwsers[i]) < Int32.Parse(listCountAnwsers[i + 1]))
    listCountAnwsers.Remove(listCountAnwser[i]);

因此,解决问题取决于您的需求。你想在结果中得到什么元素?请澄清

答案 1 :(得分:0)

试试这个。在检查条件后i++增加i的值。所以你需要使用i+1

string[] listCountAnwser = {"1", "2", "3"};
List<string> listCountAnwsers = new List<string>(listCountAnwser);
for (int i = 0; i < listCountAnwsers.Count; i++)
{
    if (Int32.Parse(listCountAnwsers[i]) < Int32.Parse(listCountAnwsers[i+1]))
    {
        listCountAnwsers.Add(listCountAnwser[i]);
     }
 }