0

我有一个书籍收藏课。我有一个我想使用的删除方法,那是在我添加书籍之后。这是我的书:

myList<Book> lst = new myList<Book>();
        lst.addItem(new Book("Dumas", "Alexandre", "The Count Of Monte Cristo", 1844));
        lst.addItem(new Book ("Clark", "Arthur C",  "Rendezvous with Rama", 1972 ));
        lst.addItem(new Book("Dumas", "Alexandre", "The Three Musketeers", 1844)); ;
        lst.addItem((new Book ("Defoe",  "Daniel",  "Robinson Cruise",  1719)));
        lst.addItem(new Book ("Clark",  "Arthur C",  "2001: A space Odyssey",  1968 ));

我的删除方法如下所示:

public void removeItem(T item)
{
    Array.Resize(ref items, items.Count() -2);
}

因此,如果我想从列表中删除例如第一本书,我尝试这样做:

lst.removeItem(0);

但是我收到一条错误消息,说“方法'removeItem'没有重载需要0个参数”

我做错了什么?

4

1 回答 1

1

但是我收到一条错误消息,说“方法'removeItem'没有重载需要0个参数”

我做错了什么?

public void removeItem(T item) // <-- code within brackets is the "overload"
{
    Array.Resize(ref items, items.Count() -2);
}

由于您为方法创建的构造函数只接受一个参数,因此您只能通过将单个参数传递给该方法来使用该方法。

如果它确实接受“0 个参数”,它将需要一个如下所示的构造函数:

public void RemoveItem()
{
    // your code here
}

但是,由于您需要将至少一个参数传递到您的方法中,因此这不会解决您的问题。

要收到错误“方法 'removeItem' 没有重载需要 0 个参数”,您必须removeItem像这样调用:

RemoveItem();

所以我建议按 CTRL+F 并搜索RemoveItem();以找到它在您的项目中的位置。

你所做的这个方法需要一个“T”类型的参数removeItem(T item)

因此,您应该收到一条错误(无法转换为类型)消息,因为您将整数传递给0不接受整数的方法,它接受您的“T”类型。

正如许多人在评论中已经指出的那样,您应该为此使用 .NET 提供的List 类。当微软已经创建并微调它时,重新发明轮子是没有意义的。

另一个提示,虽然这不会影响您的代码,但命名方法的标准是 Pascal Case。所以你应该调用它RemoveItem而不是removeItem

于 2013-03-14T10:36:04.913 回答