Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/331.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 自定义泛型类,应为方法名称_C#_Class - Fatal编程技术网

C# 自定义泛型类,应为方法名称

C# 自定义泛型类,应为方法名称,c#,class,C#,Class,我正在为学校的作业创建一个自定义通用类。我现在陷入困境,非常感谢您对以下错误的帮助 我正在将参数obj添加到数组中。问题是obj永远不会改变,因此,如果我是“蛋糕”对象,那么数组中的所有索引都会说蛋糕,而不是其他字符串 class minlist<T> { T[] storage = new T[3]; public void Add(T obj) { if (storage.Length != 3) {

我正在为学校的作业创建一个自定义通用类。我现在陷入困境,非常感谢您对以下错误的帮助

我正在将参数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;
         }
在main中,我想向列表中添加一些东西,它通常是这样的,在add方法中没有更改的参数

        minlist<authorinfo> aif = new minlist<authorinfo>();
        aif.Add(new authorinfo("The Count of Monte Cristo","Alexandre", "Dumas", 1844));
minlist aif=new minlist();
aif.Add(新著作(“基督山伯爵”、“亚历山大”、“大仲马”,1844年));
当我将add参数更改为[]obj时,我必须在main中执行以下操作

        minlist<authorinfo> aif = new minlist<authorinfo>();
        aif.Add(new authorinfo[0]("The Count of Monte Cristo","Alexandre", "Dumas", 1844));
minlist aif=new minlist();
aif.Add(新著作[0](《基督山伯爵》、《亚历山大》、《大仲马》,1844年));
这里的问题是[0]不起作用。我得到一个错误,表示应该使用方法名。我不知道该怎么办


对不起,如果这个问题有点让人困惑

你应该重组你的班级。单个
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++;
        }
    }
class-MinList
{
T[]项;
内部位置;
公开名单()
{
项目=新T[3];
位置=0;
}
公共作废新增(T项)
{
项目[位置]=项目;
位置++;
}
}

您的minlist类包含authorinfo对象(在您的示例中)。list类中的每个条目都应该是单个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开始,将其用作存储项的下一个可用索引,然后将其递增以备下次使用

如果你能让它工作,你的下一个问题是。。。如果用户尝试添加的项目超过固定数组所能容纳的数量,会发生什么情况?既然这是一项作业,我就把它留给你去做


希望有帮助

这与
authorinfo
的类定义有关。如果第一个有效,而第二个不使用第一个,不?谢谢,我知道它相当混乱。我本来打算把它清理干净的^^
public void Add(T obj)