System.ArgumentOutOfRangeException Message=计数必须为正,且计数必须引用 string/array/collection 内的位置


//求助,有点懵这个错误。

private static void StringOperate()
        {
            StringBuilder s = new StringBuilder(14);
            StringBuilder l = new StringBuilder(14);
            StringBuilder g = new StringBuilder(14);
            string m = "How Are You ";
            
             for (int i = 0; i <m.Length ; i+=4)
            {
                s.Insert(0, m.Substring(i, 4));
            }

            for (int i = 0; i <m.Length ; i++)
            {
                l.Insert(0, m.Substring(i, 1));
            }
            while (true)
            {
               
                foreach (var item in m)
                {
                   
                    int i = 0;

//此处往下会报错,错误源显示处为 if (m.LastIndexOf(item, 0, 2) >= 0)。
                    if (m.LastIndexOf(item, 0, 2) >= 0)
                        { m.Remove(m.LastIndexOf(item, 0, 2), 1); }
                    else i++;
                    if (i == m.Length) return;
                }
               
            }
         
        }

肯定越界了吗,从0位置开始找,然后长度为2,到头了哪后还来哪来的2个字符。这个count是指从0位置往前找2个字符,已经第一个字符了,在往前就越界了。
而且题主的i放到foreach里面了,这样每次i的值都是0,后面的i++根本没什么意义了,放到foreach外
不过题主是想实现什么功能?最好描述清楚来。

有帮助请【采纳该答案】,谢谢~~有其他问题可以继续交流~

数组越界了,检查一下索引是否超出最大下标。