2017-04-24 41 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