自定义泛型类,期望的方法名称

时间:2012-03-07 10:43:42

标签: c# class

我正在为学校的作业创建自定义通用课程。我此刻陷入困境,我非常感谢以下错误提供的一些帮助。

我将参数obj添加到数组中。问题是obj永远不会改变,因此如果我是" cake"数组中的所有索引都会说cake,而不是其他字符串。

   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等等。

当我在public void add(T obj)中编辑参数并将其设为public void add(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]不起作用。我得到一个错误,说明预期的方法名称。我不知道该怎么做。

很抱歉,如果这个问题有点令人困惑。

2 个答案:

答案 0 :(得分:1)

你应该重组你的课程。单个authorinfo不是authorinfo s的数组。

您的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++;
        }
    }

答案 1 :(得分: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,将其用作下一个存储项目的空闲索引,然后将其增加为下次准备。

如果你可以解决这个问题,你的下一个问题就是......如果用户试图添加的项目比你的固定阵列能容纳的更多,会发生什么?由于这是一项任务,我将把它留给你,让你尝试工作。

希望有所帮助。