2012-03-07 65 views
0

我正在爲學校中的作業創建自定義泛型類。我現在卡住了,我非常感謝以下錯誤的一些幫助。我正在給數組添加參數obj。問題是,obj永遠不會改變,因此如果我是「蛋糕」的對象,數組中的所有索引都會說蛋糕,而不是其他字符串。自定義泛型類,預期方法名稱

class minlist<T> 
{ 
    T[] storage = new T[3]; 

public void Add(T obj) 
    { 
     if (storage.Length != 3) 
     { 
      storage[0] = obj; 
      storage[1] = obj; 
      storage[2] = obj; 
      storage[3] = obj; 
     } 

我覺得如果我把obj作爲一個數組,就可以解決問題。因此,能夠排序在不同的索引中的每個字符串,我會把蛋糕放在0和餅圖1等

當我編輯公共無效添加(T obj)的參數,並使其公共無效添加(T [ ] obj)

我也有爲obj添加索引。

  storage[0] = obj[0]; 
      storage[1] = obj[1]; 
      storage[2] = obj[2]; 
      storage[3] = obj[3]; 

在主,我想補充一點,以它通常看起來像這樣的列表,而無需在add方法更改的參數。

 minlist<authorinfo> aif = new minlist<authorinfo>(); 
     aif.Add(new authorinfo("The Count of Monte Cristo","Alexandre", "Dumas", 1844)); 

當我將add參數更改爲[] obj我必須在main中執行以下操作。

 minlist<authorinfo> aif = new minlist<authorinfo>(); 
     aif.Add(new authorinfo[0]("The Count of Monte Cristo","Alexandre", "Dumas", 1844)); 

這裏的問題是[0]不起作用。我收到一個表示方法名稱的錯誤。我不知道該怎麼做。

對不起,如果這個問題有點混亂。

+0

這是關於'authorinfo'的類定義。如果第一個工作,第二個不使用第一個,不是? – MoonKnight 2012-03-07 10:50:46

回答

1

你應該重組你的班級。單個authorinfo不是authorinfo的數組。

您的add方法接受單個項目。如果你繼續下一個空項目的位置的軌跡,您可以創建列表:

class MinList<T> 
    { 
     T[] items; 
     int position; 
     public MinList() 
     { 
      items = new T[3]; 
      position = 0; 
     } 

     public void Add(T item) 
     { 
      items[position] = item; 
      position++; 
     } 
    } 
+0

謝謝,我知道它很凌亂。我正在清理它。 ^^ – saturn 2012-03-07 10:51:49

0

你minlist類持有的對象 - 在你的樣品的情況下 - authorinfo。列表類中的每個條目都應該是單個authorinfo對象 - 好嗎?

所以,你的第一個樣品是爲調用它正確:

aif.Add(new authorinfo("The Count of Monte Cristo","Alexandre", "Dumas", 1844)); 

(用於啓動的目的,可能會更容易,如果你寫這樣的想象:

authorinfo info = new authorinfo("The Count of Monte Cristo","Alexandre", "Dumas", 1844); 
aif.Add(info); 

使得它更清晰的你)添加一個對象。)

由於您添加的是單個對象,而不是對象數組,因此您首次嘗試聲明的方法是正確的:

public void Add(T obj) 

現在的問題是如何存儲項目。因爲您使用的是固定數組長度,所以您無法知道迄今爲止存儲了多少物品 - 因此您還需要在班級中保存迄今爲止實際存儲的物品數量 - 從0,將其作爲下一個自由索引來存儲該項目,然後將其增量準備下一次。

如果你可以得到這個工作,你的下一個問題是......如果用戶試圖添加比固定數組更多的項目會發生什麼?既然這是一項任務,我會留下來讓你去嘗試。

希望有所幫助。

+0

它的確如此,謝謝。 – saturn 2012-03-07 11:42:02