2017-04-24 98 views
-2

我不是很擅长数据结构,但我想尝试在C#List类中实现方法添加这是我需要的唯一方法,我无法弄清楚下一步该怎么做我只有这个一段代码C#列表实现

public class myList<T> : List<T> 
    { 
     public T[] items; 
     public int size; 

     public myList() 
     { 

      items = new T[0]; 
     } 
     public myList(int dim) 
     { 
      items = new T[dim]; 
     } 


     public new void Add(T item) 
     { 
      items[size++] = item; 

     } 
    } 

我也使用继承到列表中,因为我不希望执行其他的事情(接口)。随着这个代码,我有当我想看看我添加缺少的东西该列表(foreach)我什么都看不到。任何人都可以帮助我吗?

+1

为什么你要从'List '继承'如果你想影响它的实际功能?你应该从'IList '继承。 –

+0

除了继承问题而不是实现接口之外,您绝不会试图调整数组的大小。 – juharr

+0

如果您只需要标准功能,则应该使用标准列表 –

回答

9

你从List<T>继承:

public class myList<T> : List<T> 

并用自己的执行重写Add(T item)方法:

public new void Add(T item) 

而这所有你覆盖。因此,当您尝试从对象中尝试读取时,您使用的是List<T>上的实现。但是没有添加到实现,因为你的覆盖干预。就该父级的实施而言,没有增加任何东西

要么覆盖您需要使用的所有内容,要么不使用该基类。也许不是你想要实现的接口

public class myList<T> : IList<T> 

这将迫使你通过该接口所需的功能提供实现。否则你所拥有的是一个列表的两个半实现,它们彼此不知道任何事情。一些功能转到其中一个,其他功能转到另一个功能。

+0

是的,现在有道理,谢谢...我会直接走,我的老师说他不希望我使用类List实现,所以他告诉我为自己实现,但我找不到任何有用的互联网资源我创建的是关于链接列表,我需要使用通用列表,因为我建立了一个游戏战列舰,我使用各种数据列表。这就是为什么我使用新的关键字,因为我想有我自己的版本的添加功能...,我didn我不希望从接口继承,因为它的实现..我想保持简单和直接... – JohnBoy19