从集合类中移除项

本文关键字:集合类 | 更新日期: 2023-09-27 18:03:46

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

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 ));

我的remove方法是这样的:

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

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

lst.removeItem(0);

但是我得到一个错误说"没有重载方法'removeItem'需要0个参数"

我做错了什么?

从集合类中移除项

但是我得到一个错误说"没有重载方法'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
}

然而,当你需要至少一个参数传递给你的方法时,这并不能解决你的问题。

要接收错误"No overload for method 'removeItem' takes 0个参数",你必须像这样调用removeItem:

RemoveItem();

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

这个方法接受一个类型为"T"的参数removeItem(T item)

所以你应该收到一个错误(无法转换为类型)消息,因为你正在传递一个整数0到一个不接受整数的方法,它接受你的"T"类型。

正如许多人已经在评论中指出的那样,您应该使用。net提供的List类来实现这一点。当微软已经创造并调整好它时,重新发明轮子没有意义。

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