我有一本带书的收藏课。我有一个我想要使用的删除方法,那是在我添加了书籍之后。这是我的书:
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个参数”
我做错了什么?
答案 0 :(得分: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 class。当微软已经创建并对其进行微调时,没有必要重新发明轮子。
另外一个提示,虽然这不会影响您的代码,但命名方法的标准是Pascal Case。因此,您应该将其称为RemoveItem
,而不是removeItem