簡體   English   中英

從集合類C#中刪除項目

[英]Removing items from collection class c#

我有藏書班。 我有一個要使用的刪除方法,該方法是在ive添加書籍之后。 這是我的書:

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個參數”

我在做什么錯?

但是我收到一條錯誤消息,指出“方法'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傳遞給一個不接受Integer的方法,該方法接受您的“ T”類型。

正如許多人在評論中已經指出的那樣,您應該使用.NET提供的List類 當微軟已經創建並對其進行了微調時,沒有必要重新發明輪子。

另一個提示,盡管這不會影響您的代碼,但是命名方法的標准是Pascal Case。 因此,您應該將其稱為RemoveItem而不是removeItem

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM