while (list.IndexOf("*") != -1)
            {
                int num = list.IndexOf("*");
                double answer = double.Parse(list.ElementAt(num - 1)) * double.Parse(list.ElementAt(num + 1));
                list.Insert(num - 1, answer.ToString());
                for (int i = num; i < list.Count - 2; i++)
                {
                    list.Insert(i, list.ElementAt(i + 2));
                }
                list.RemoveAt(list.Count - 1);
                list.RemoveAt(list.Count - 1);
            }

解决方案 »

  1.   

    for (int i = num; i < list.Count - 2; i++)
      {
      list.Insert(i, list.ElementAt(i + 2));
      }
    这种调用可以过编译?
    在遍历某集合的时候改动元素数目?!
      

  2.   

    for (int i = num; i < list.Count - 2; i++)
      {
      list.Insert(i, list.ElementAt(i + 2));
      }
    这种调用可以过编译?
    在遍历某集合的时候改动元素数目?!
    =============
    问题就在这里,编译应该可以过,但会导致死循环,导致内存不足。
    可能可以这样处理,可以避免死循环(我没仔细看你代码):
    int count = list.count-1;
    for( int i = num; i < count ; i++)
    {
      list.Insert(i, list.ElementAt(i + 2));
    }