2012-05-12 2 views
0

고객 개체 목록이 있으며 각 개체에서 이름을 검색하려고합니다. Customer 객체에는 Contact 객체를 반환하는 ContactData 속성이 있습니다. Contact 객체 안에는 이름 문자열을 반환하는 메서드가 있습니다. 그것과 비교하려고하는 이름이지만, Customer 객체에 존재하지 않는 이름을 검색 함에도 불구하고 매번 히트를 치기 때문에 제대로 작동하지 않습니다. 내가 사용하고있는 코드 :개체 목록에서 검색

나는 단순한 for 루프를 사용하여 테스트했지만 동일한 결과를 얻는다. 나는 옳은 일을하고 있는지 잘 모르겠다. 감사!

+0

foreach 루프에 간단한 'console.writeline' 호출을 삽입하여 루프의 모든 항목에 대해 ContactData.FullName을 인쇄하십시오. 변수 네이밍이 혼란 스럽다면 아마 foreach (m_customers에있는 고객) ' – ChristopheD

+0

을 원할 것입니다.'m_customers'에는 고유 한 객체의 목록이 포함되어 있는지 확인 했습니까? – ChrisF

+0

설명해 주시겠습니까, ChrisF? –

답변

1

이 시도, 그것은합니다 ... '하면 FullName가'어떻게 든 코드에서 어딘가에 모든 고객에게 "안나"로 설정하거나, 데이터베이스, 또는 저장된 프로 시저에되고 있음을 수 있습니다

foreach (Customer name in m_customers) 
{ 
    if(name.ContactData != null) System.Diagnostics.Debug.WriteLine(name.ContactData.FullName); 

    if (name.ContactData.FullName == "Anna") 
    { 
     MessageBox.Show(string.Format("Yes"), "Test!", MessageBoxButtons.OK, MessageBoxIcon.Information); // Just for testing 
    } 
} 

그런 경우라면 'Anna'키워드에 대한 전체 검색을 수행하고 팝업이 표시되는지 확인하십시오.

다른 가능성은 각 고객과 함께 새로운 ContactData 객체를 생성하지 않고 단순히 변수를 재사용한다는 것입니다. 이것은 포인터가 사용 중이기 때문에 Same ContactData 객체로 모든 고객을 업데이트 할 수 있습니다. 대신, 각 고객마다 새로운 ContactData 객체를 새로 작성하십시오.

이러한 두 가지 가능성이 도움이되지 않으면 문제를 해결하기 위해 더 많은 코드를 게시해야합니다.

+0

코드에서 WriteLine 아래에 빨간색 선이 생깁니다. System.Diagnostics를 사용하여 사용하고 있지만; 나는 또한 각 개체의 이름을 보여주기 위해 메시지 상자를 사용했으며 모두 다르고 정확합니다. –

+0

죄송합니다. 내 잘못입니다. It 's System.Diagnostics.Debug.WriteLine –

+0

그래서 .. "John.Doe.Should.Not.Exist"에서 같은 코드를 가져 오면 MessageBox가 실행됩니까 ?? –