日期:2014-05-17  浏览次数:20867 次

为什么删除数组的某个元素,总是提示索引超出数组界限
string[] furniture = new string[] { "桌子", "椅子", "床", "沙发" };
            int length = furniture.Length;
            Console.WriteLine("the length of the array furniture is {0}", length);
            Console.WriteLine("please input the index of what you delete:");
            int index = Convert.ToInt16(Console.ReadLine());
            if (index < 0 && index > 3)
            {
                Console.WriteLine("the index you input is wrong");
            }
            else
            {
                for (int i = index; i < length; i++)
                {
                    furniture[i] = furniture[i + 1];//总是提示索引超出数组界限

                }

            }
            foreach (string m in furniture)
            {
                Console.WriteLine("after delete the index is {0}", m);
            }
            Console.ReadLine();

        }

------解决方案--------------------
furniture[i] = furniture[i + 1];你这个不超界限才怪。。。。
------解决方案--------------------
当i=3的时候 i+1=4>furniture.Length, furniture[i + 1]已经超出数组长度,注:索引从0开始
------解决方案--------------------
索引是从0开始的- -,如果还有点晕的话,单步一下就懂了。
------解决方案--------------------
 i < length
=>
 i < length-1
------解决方案--------------------
删除数组某一元素用RemoveAt()就好了啊?
------解决方案--------------------
数组的长度是固定的,印象中不存在删除某项的概念。如果其中的某个元素不需要了,一般是做致空操作。
如果需要动态改变的集合,可以用List<T>
------解决方案--------------------
................多看看基础的书吧
------解决方案--------------------
引用: