2013-03-14 74 views
0

我創建了一個預定義長度爲2的數組。我有一個向數組添加項目的方法。檢查數組的當前值,C#

它的代碼是:

public void addItem(T item) 
{ 
    Array.Resize(ref items, items.Count() + 2); 
    items[items.Count() - 2] = item; 
} 

現在,我想要做的是,它首先必須檢查數組的大小,看看數組充滿了不。如果數組已滿,則應該使數組大小加倍。如果它不滿,那麼它不應該做任何事情。所以,我想知道我是否可以用if語句使這成爲可能?

編輯:我寫的集合類,這就是爲什麼我需要檢查陣列

+9

聽起來像你重新發明['名單'](http://msdn.microsoft.com/en-us/library/6sh2ey19.aspx)class?請問爲什麼? – 2013-03-14 09:14:10

+2

爲什麼不使用'List '這個功能是否已經內置? – 2013-03-14 09:14:22

+0

創新輪子是一個嚴肅的業務 – Sergio 2013-03-14 09:15:10

回答

1

你真的應該熟悉它已經默認使用此功能List<T>

List.Add例如調用EnsureCapacity

private void EnsureCapacity(int min) 
{ 
    if (this._items.Length < min) 
    { 
     int num = (this._items.Length == 0) ? 4 : (this._items.Length * 2); 
     if (num < min) 
     { 
      num = min; 
     } 
     this.Capacity = num; 
    } 
} 
+0

是的,但我正在寫一個集合類,我不允許使用通用集合 – user2167085 2013-03-14 09:17:24

+0

所以這個作業。好的,但不清楚你實際存在什麼問題。你可以看一下'List '(我用'ILSpy')的實現來看MS是如何做到的。 – 2013-03-14 09:22:02

0

你應該知道,你沒有學到任何東西,如果你不自己

0做功課

但嘗試這樣的事:

如果計數>尺寸-2 比調整:尺寸* 2 //別的什麼也不做

也許你可以添加一個功能,如: 如果計數<大小/ 4 比移項前和調整:尺寸/ 2 別的什麼//

希望這個建議是對您有用