none
关于ILIST<T>引发“Collection was of a fixed size.”的问题! RRS feed

  • 问题

  • 现在发现了这个问题。网上找了下资料,看到ILIST有这个问题,说是不太可能改ILIST了,代价很大。
    那我想请教一下,用了ILIST类型的,要操作ADD,REMOVE这些操作的话,我们应该如何做呢?
    谢谢!

    2009年6月4日 10:33

答案

  • IList<T>继承自 ICollection<T>, IEnumerable<T>,IEnumerable

    对于插入数据可用IList<T>.Insert(int index,T item) index代表要添加到的索引,从0开始,item代表要添加的项
    对于删除数据可用IList<T>.RemoveAt(int index)  index代表要删除项的索引


    为了方便你可以用实现了IList<T>接口的泛型类比如List<T>进行操作


    List<string> dinosaurs = new List<string>();

            Console.WriteLine("\nCapacity: {0}", dinosaurs.Capacity);

            dinosaurs.Add("Tyrannosaurus");
            dinosaurs.Add("Amargasaurus");
            dinosaurs.Add("Mamenchisaurus");
            dinosaurs.Add("Deinonychus");
            dinosaurs.Add("Compsognathus");

            Console.WriteLine();
            foreach(string dinosaur in dinosaurs)
            {
                Console.WriteLine(dinosaur);
            }

    努力着就不会放弃!.net技术交流群 33083877http://hi.baidu.com/1987raymond
    2009年6月4日 11:16
    版主
  • Ilist 是个接口  本身没有任何功能    要看你怎么实、县


        Ilist 中的某个实现 是fixsize的  不代表所有的 Ilist 是fixsize的

    实现Ilist 的list<T>  就具有可扩展的能力 


    紫柔版主的头像真叫萌得一个不行啊。。。。
    答案800 撒花
    2009年6月8日 1:44
    版主

全部回复

  • 您可以使用IDictionary<T>接口
    IList(T)就是从Idictionary(T)继承而来,但是不公开Add,Remove等方法


    ~~~~~ 如果我的回复对您有所帮助,请您点击一下此回复右上角的“投票认定帖子内容有帮助” ~~~~~
    ~~~~~ 向着三颗奖牌出发!^______^ ~~~~~
    2009年6月4日 10:50
  • IList<T>继承自 ICollection<T>, IEnumerable<T>,IEnumerable

    对于插入数据可用IList<T>.Insert(int index,T item) index代表要添加到的索引,从0开始,item代表要添加的项
    对于删除数据可用IList<T>.RemoveAt(int index)  index代表要删除项的索引


    为了方便你可以用实现了IList<T>接口的泛型类比如List<T>进行操作


    List<string> dinosaurs = new List<string>();

            Console.WriteLine("\nCapacity: {0}", dinosaurs.Capacity);

            dinosaurs.Add("Tyrannosaurus");
            dinosaurs.Add("Amargasaurus");
            dinosaurs.Add("Mamenchisaurus");
            dinosaurs.Add("Deinonychus");
            dinosaurs.Add("Compsognathus");

            Console.WriteLine();
            foreach(string dinosaur in dinosaurs)
            {
                Console.WriteLine(dinosaur);
            }

    努力着就不会放弃!.net技术交流群 33083877http://hi.baidu.com/1987raymond
    2009年6月4日 11:16
    版主
  • 使用arraylist 或者 list不可以吗?
    you have a dream,you gonna protect it! http://www.cnblogs.com/frank_xl
    2009年6月4日 11:46
    版主
  • 你好,ILIST<T>并没有太多方法可以方便实用,如果仅仅是作为集合数据的承载体,确实,IList<T>可以胜任。

    不过,更多的时候,我们要对集合数据进行处理,从中筛选数据或者排序,这个时候IList<T>就爱莫能助了。

    当你只想使用接口的方法时,ILis<T>这种方式比较好,他不获取实现这个接口的类的其他方法和字段,有效的节省空间。

    IList <T>是个接口,定义了一些操作方法这些方法要你自己去实现,至于你想添加删除数据,可以使用ArrayList等等。
    邹俊才
    2009年6月7日 14:51
    版主
  • 恩,有道理,不过有些应用必须用这个,我今天就碰到一个应用只能用它

    2009年6月7日 16:16
  • Ilist 是个接口  本身没有任何功能    要看你怎么实、县


        Ilist 中的某个实现 是fixsize的  不代表所有的 Ilist 是fixsize的

    实现Ilist 的list<T>  就具有可扩展的能力 


    紫柔版主的头像真叫萌得一个不行啊。。。。
    答案800 撒花
    2009年6月8日 1:44
    版主