想问一下,C#List的元素排列顺序是按照添加的顺序排列的吗(不进行人工排序的情况下)?
如果是按照添加顺序排列的话,我删除第一个元素后,剩下的元素会重新排序吗?我主要想做一个队列,以前C里是用链表做的,但是到C#一想有个List可以动态添加元素,兴许可用,但是不知道如果默认不做改动的话,是不是就像队列一样,先添加的排在前,后添加的排在后,删除第一个元素,后面的依次上浮一位。第一次用C#,求前辈们指点指点啊,不然又要写成链表样或者定长数组样的好不爽。

解决方案 »

  1.   

    链表是链表,数组是数组,需要什么数据结构就用什么结构。List本身是按照添加顺序排列的,可以插入和删除。
    队列是Queue,先进先出。你要什么东西你自己应该知道,你自己都不知道别人怎么可能知道。
      

  2.   

    C#里有现成的Queue类型,不需要自己去实现。
      

  3.   

    那么按这两句话理解的话,就是说如果每次只删List头,只添加List尾的话,List是可以实现队列的对吗?我主要是怕它乱排序,比如我add个1,再add个3,再add个2,结果index 0 = 1,index 1=2, index 2=3了。
      

  4.   

     public void test()
            {
                List<int> l = new List<int>();
                for (int i = 0; i < 5; i++)
                {
                    l.Add(i);
                }
                l.Remove(0);
                int e=l[0];
               
            }自己试一下喽
      

  5.   

    我晕,我刚学不知道啊,上网一搜看到那些人都写成链表和数组那种了,一想List如果可用的话可能会简单点,汗。
    我再搜一下,谢谢哈!
      

  6.   

    我删除第一个元素后,剩下的元素会重新排序吗?
    不会是不是就像队列一样,先添加的排在前,后添加的排在后,删除第一个元素,后面的依次上浮一位。
    是的为什么自己不写个小demo试试看呢
    List<int> list = new List<int>();
    list.Add(1);
    list.Add(5);
    list.Add(3);
    list.Add(9);
    list.Add(2);
      

  7.   

    你说的是泛型的 List<T>?
     public void Add(T item)
            {
                if (this._size == (int)this._items.Length)
                {
                    this.EnsureCapacity(this._size + 1);
                }
                T[] tArray = this._items;
                List<T> list = this;
                int num = list._size;
                int num1 = num;
                list._size = num + 1;
                tArray[num1] = item;
                List<T> list1 = this;
                list1._version = list1._version + 1;
            }
    这是List<T> Add 方法的反编译.
    是没有顺序的哈.
    你要链表有 "LinkedList",你要排序的表有 SortedList...
    你要看你具体是想要什么类型哈....
      

  8.   

    又开始胡说八道了,不知道你是真看不懂还是看都没看,对着自己贴的代码说瞎话。你到底懂不懂我说的意思哈...
    那你说是不是排序了的?
    我上这个代码只是想说,添加的时候没有排序...你是不是以为List<T>是有排序的?
      

  9.   

    又开始胡说八道了,不知道你是真看不懂还是看都没看,对着自己贴的代码说瞎话。你不懂别人说什么就不要乱说.
    那楼主说Remove的时候会不会排序,你看那个Remove的方法过没有...
    这叫乱说...你都不懂我的意思...什么乱说...
      

  10.   

    又开始胡说八道了,不知道你是真看不懂还是看都没看,对着自己贴的代码说瞎话。你不懂别人说什么就不要乱说.
    那楼主说Remove的时候会不会排序,你看那个Remove的方法过没有...
    这叫乱说...你都不懂我的意思...什么乱说...如果你有大脑的话看看楼主帖子的第一句话没大脑的话当我没说。
      

  11.   

    又开始胡说八道了,不知道你是真看不懂还是看都没看,对着自己贴的代码说瞎话。况且当时我想是不是要上Remove的代码还是Add的方法,我就上Add而已.没说完话,你就激动...你能不能看下我说的什么东西和楼主的问题再说...就算我说不对你也要看楼主说什么和我说什么再说我没有说你...
      

  12.   

    又开始胡说八道了,不知道你是真看不懂还是看都没看,对着自己贴的代码说瞎话。你不懂别人说什么就不要乱说.
    那楼主说Remove的时候会不会排序,你看那个Remove的方法过没有...
    这叫乱说...你都不懂我的意思...什么乱说...如果你有大脑的话看看楼主帖子的第一句话没大脑的话当我没说。
    行...LZ不好意思我说错了...
    我以为你是要问有序的问题...