2011-11-10 2 views
1

여기 내 오류가 보이지 않습니다. 나는 이것이 최선의 방법이 아니라는 것을 알고 있지만 나는 Arraylist를 사용해야 할 의무가있다.개체 속성 문제를 검색하는 C# arraylist

아무리해도 내 arraylist에 올바른 요소가 포함되어 있으며 Item 클래스의 Number 속성이 'searchNr'과 같은지 확인하고 싶습니다.

그렇다면 ToString()을 사용하여 해당 요소를 인쇄하고 싶습니다. "107"(Arraylist의 마지막 요소의 Number 속성)을 검색하면 찾을 수 있지만 다른 숫자 속성은 찾을 수 없습니다. (Equals)와 같은 If 문 이외의 다른 것을 사용할 수 있습니까?

public void Search(object sender, EventArgs e) 
    { 
     string searchNrString = searchTextBox.Text; 
     int searchNr = Int32.Parse(searchNrString); 


     foreach (Item product in item)  
     {         

      if (product.Number == searchNr) //if we find the number 
      { 
       resultTextBox.Text = ((Item)product).ToString();  

      } 
      else if (product.Number != searchNr) //if we don't find the number 
      { 
       string debug; 
       debug = string.Format("Could not find the number {0} arraylist :{1}", product.Number, item.Count); //debug här! 
       resultTextBox.Text = debug; 
      } 
     } 
    } 
+0

ArrayList는 어디에 있습니까? 또한 .NET의 어떤 버전을 사용하고 있습니까? –

답변

4

당신은 당신이 원하는 항목을 찾을 일단 루프를 종료하기 위해 break 문을 추가해야합니다

if (product.Number == searchNr) //if we find the number 
{ 
    resultTextBox.Text = ((Item)product).ToString();  
    break; 
} 

그렇지 않으면 당신이 항목을 찾을 수 있습니다,하지만 루프 따라서 수를 마지막까지 계속 더 이상 후속 항목과 일치하지 않으므로 else 문이 평가됩니다. 따라서 마지막으로 찾은 항목이 계속 표시되는 것입니다 ent (즉, "107"항목).

+0

문제가 해결되었습니다. 감사합니다. – user1040281

+1

@ user1040281 위대한! 디버거를 사용하여 코드를 단계적으로 실행하는 것을 고려해야합니다. 루프에 중단 점을 설정하고 문제를 해결했으면 문제가 분명 해졌을 것입니다. –

+0

그래, 다시 한 번 다음 번에 시도해 보겠습니다. 꽤 새로운 디버거를 사용하는 것이 아닙니다. :) – user1040281