2012-03-07 67 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