假设已创建Student类的3个对象stu1、stu2和stu3,下面C#代码的运行结果是(B  )。 
List<Student> students = new List<Student>();
students.Add(stu1);
students.Add(stu2);
students.Add(stu3);
for(int i=0; i<students.Count; i++)
students.RemoveAt(i);
Console.WriteLine(students.Count);   (选择一项)
A) 0
B) 1
C) 2
D) 编译出错答案为什么是‘1’啊。麻烦解释详细点

解决方案 »

  1.   

    RemoveAthou后索引全减了1
    stu2没有删除
      

  2.   

    for(int i=0; i<students.Count; i++)
    students.RemoveAt(i);i=0时,list中为stu1,stu2,stu3;list.count=3,i<count,删掉第0个,即stu1被删除。
    此时list中为stu2,stu3,count变为2
    i=1时,i<count,删掉第1个,即stu3被删除;
    此时list中为stu2,count变为1
    i=2时,i>count,条件不符合,不执行for循环中的语句。
    故最后count为1,且这仅存的元素为stu2
      

  3.   

    这种要 RemoveAt 的
    你应该反过来删除
    for(int i= students.Count - 1; i>=0; i--)
    students.RemoveAt(i);