2013-03-14 4 views
0

나는 책이있는 컬렉션 클래스가 있습니다. 내가 사용하고자하는 제거 방법이 있는데, 그것은 필자가 책을 추가 한 후입니다. 여기 내 책은 다음과 같습니다컬렉션 클래스에서 항목 제거 C#

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

하지만 난 내가 wron을 무엇을하고 메신저 "어떤 과부하 방법에 대한 'removeItem가'0 인수를 사용하지 않습니다"

없다는 오류 지?

+1

왜 'List '을 사용하지 않습니까? 숙제 때문인가요? – Dai

+2

더 완벽한 예를 들려 줄 수 있습니까? myList는 당신이 작성한 타입인가? 왜'System.Collections.Generic.List '을 사용하지 않습니까? –

+2

왜 표준'List' 만 쓰지 않으시겠습니까? 그것은'Remove' 메쏘드가 내장되어 있습니다.http://msdn.microsoft.com/en-us/library/cd666k3e.aspx – Arran

답변

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 
} 

을 문제를 해결할 수 있습니다.

오류를 수신 할 "0 인수를 방법 'removeItem'에 대한 과부하는"이 같은 removeItem를 호출 할 필요가 없을 것입니다 :

RemoveItem(); 

그래서 CTRL + F를 타격하고 RemoveItem(); 검색 제안 그것이 어디에 있는지 찾아라.

당신이 만든이 방법은 유형의 하나 개의 인수 "T"당신이하지 않는 방법으로 정수 0을 통과하기 때문에 removeItem(T item)

그래서 당신 (입력 캐스팅 할 수 없습니다) 메시지 오류가 발생한다 소요

정수를 받아들이면 "T"유형을 사용할 수 있습니다.

많은 사람들이 이미 의견에 언급 했으므로 .NET에서 제공 한 List class을 사용해야합니다. 마이크로 소프트가 이미 만들었고 미세 조정했을 때 바퀴를 재발 명할 필요가 없습니다.

코드에 영향을주지 않지만 이름 지정 방법의 표준은 파스칼 케이스이지만 추가 팁이 있습니다. 따라서 removeItem 대신 RemoveItem으로 전화해야합니다.

+0

이 답변은 의미가 있습니다. 그러나 내가 왜 형식 오류로 인해 removeItem (0)을 호출 할 때 컴파일 오류가 발생하지 않는지 궁금합니다. – Fendy

+0

@Fendy 나는 그것에 대해 궁금해했다. 내 가정은 인자없이'removeItem'을 호출하려고 시도하는 코드를 사용하지 않아서 표시되지 않은 코드가 있다는 것입니다. 오류 메시지가 의미하는 바를 설명하려고했습니다. 현재 양식의 질문에 한정된 대답이 없다고 생각합니다. 나는 그것을 더 명확하게 할 수 있다고 생각한다. – Amicable