2013-11-26 184 views
-1

對於我的生活,我無法弄清楚這一點。基本上我試圖用未排序的對象列表進行搜索。無論我嘗試什麼,位置都會返回-1。當我看到邏輯時,對我來說很有意義,但也許我一直在盯着我的屏幕太久。任何幫助將不勝感激!返回列表對象的索引值?

  public static int ContactSearchFirst(List<Contact> contactList, string userInput) 
    { 
     int location = -1; 
     for (int index = 0; index < contactList.Count && location == -1; index++) 
     { 
      if (contactList[index].FirstName.ToUpper().Equals(userInput.ToUpper())) 
      { 
       location = index; 
      } 
     } 
     return location; 
    } 
+1

此代碼有幾個問題。你使用哪種語言?改進取決於哪種語言。 –

+0

對不起,這是C#。 –

回答

1

如果您使用C#,那麼整個環路非必要。你可以簡單的使用方法List<T>.FindIndex

public static int ContactSearchFirst(List<Contact> contactList, 
            string userInput) 
{ 
    return contactList 
     .FindIndex(c => 
      c.FirstName.Equals(userInput, 
           StringComparison.InvariantCultureIgnoreCase)); 
} 

您可能還需要修正輸入,使前/後間隔不會引起意想不到的結果。

0

你只會得到一個新的位置值,如果下面是有史以來真,所以也許它永遠是正確的:

if (contactList[index].FirstName.ToUpper().Equals(userInput.ToUpper())) 
+0

如果我在contactList [index] .FirstName和userInput中輸入「Bob」,它仍然返回-1。 –

+0

做這個測試時,如果你打印出「if」邏輯的布爾值,是否打印出「true」? –

0

當調用函數時,參數可能傳遞不正確。

如果您使用的是Visual Studio,您可以通過在代碼中設置一個斷點並檢查contactList和userInput變量來輕鬆檢查。