List<string> aa = new List<string>();
    aa.Add("1");
    aa.Add("2");
    aa.Add("3");
    aa.RemoveAt(0);
    aa.Add("4");
    aa.RemoveAt(0);
    aa.Add("5");

解决方案 »

  1.   

    你写个判断,如果元素〉3个,就移去第一个,
        if (aa.Count > 3)
                {
                    aa.RemoveAt(0); 
                }
      

  2.   

    public class MyQueue<T> : Queue<T>
        {
            public MyQueue(int maxsize)
            {
                this.MaxSize = maxsize;
            }
            public int MaxSize { get; set; }
            public void Enqueue(T t)
            {
                base.Enqueue(t);
                if (this.Count > MaxSize)
                {
                    this.Dequeue();
                }
            }
        }
      

  3.   

    非要用List的话,自己写一个继承类,然后重写Add方法
      

  4.   

    google“object pool” 这东西已经无数人写过了,我就不想重新造了
      

  5.   

    这个不是队列。他要的是先进先出。如果一定不使用队列的话,用list也可以,就是定义list<string> li = new list<string>(3),然后新增前先判断,再移掉index=0的,再新增。
      

  6.   

    呵呵,你这样万一大于4是不是就尴尬了?
    如果是在每次ADD之后执行,是不可能出现大于4的情况的.
    当然为了防止有其他代码也在修改LIST,也可以加个循环
      

  7.   

    List.removeat(index)
    楼主要实现先进先出,为什么不考虑队列呢?
      

  8.   

    呵呵,你这样万一大于4是不是就尴尬了?
    如果是在每次ADD之后执行,是不可能出现大于4的情况的.
    当然为了防止有其他代码也在修改LIST,也可以加个循环
    多线程并发访问就会出问题,你可以试试,虽然最终也会删掉,但是在删掉之前你的逻辑可能会出问题。
    虽然你可以通过加锁来解决但是不如用个更靠谱的方法。
      

  9.   

    呵呵,你这样万一大于4是不是就尴尬了?
    如果是在每次ADD之后执行,是不可能出现大于4的情况的.
    当然为了防止有其他代码也在修改LIST,也可以加个循环
    加循环解决不了并发问题吧?这种写法用起来很费劲啊,到处都要判断。
      

  10.   

    加进去排序就ok了 何必那么麻烦呢http://www.51zxw.net/study.asp?vip=8963801 
    有需要学习的可以进来秒哈  
      

  11.   

    呵呵,你这样万一大于4是不是就尴尬了?
    从一开始就递归判断,符合条件之后在执行aa.Add()不就OK了
      

  12.   

    呵呵,你这样万一大于4是不是就尴尬了?
    从一开始就递归判断,符合条件之后在执行aa.Add()不就OK了
    反正是我我就会按照6楼那么写
      

  13.   

    这种东西 .NET提供的就有Queue队列这个机制嘛  干嘛非要用list
      

  14.   

    stack是先进后出的是的。。他说的不是队列么