2009-01-21 48 views
0

最近,我使用謂詞來描述搜索邏輯並將其傳遞給少數列表的Find方法。列表<T>有什麼好處。查找替代方案?

foreach (IHiscoreBarItemView item in _view.HiscoreItems) 
{ 
    Predicate<Hiscore> matchOfHiscoreName = 
     (h) => h.Information.Name.Equals(item.HiscoreName); 

    var current = player.Hiscores.Find(matchOfHiscoreName); 
    item.GetLogicEngine().ForceSetHiscoreValue(current as Skill); 

    var goal = player.Goals.Find(matchOfHiscoreName); 
    item.GetLogicEngine().ForceSetGoalHiscoreValue(goal as Skill); 
} 

除了'少代碼'之外,在替代方法中使用上述方法還有什麼好處。

我對錶現特別感興趣。

由於

回答

12

效益查找使用LINQ以上:它是可利用在.NET 2.0 效益LINQ超過查找:與其它序列一致性;查詢表達式語法等

查找BinarySearch的好處:該列表不必排序,只需要進行相等比較 BinarySearch優於Find:BinarySearch爲O(log n);查找是O(n)

找到了foreach循環的優點:緊湊,而不是重複自己 效益foreach循環在尋找的:要執行

這些中的任何其他自定義處理,只能找VS BinarySearch有任何真正的性能差異。當然,如果你可以從List<T>更改爲Dictionary<TKey,TValue>,那麼查找元素將變爲攤銷O(1)...

+0

這是一個非常全面的答案,謝謝。 – Llyle 2009-01-21 11:12:11