我正在查看一些遺留代碼。該類使用ArrayList來保存項目。這些項目是從數據庫表中提取的,可以達到600萬。該類公開了一個名爲「ListCount」的方法來獲取Arraylist中的項目數量。ArrayList計數與任何
Class Settings
{
ArrayList settingsList ;
public Settings()
{
settingsList = GetSettings();//Get the settings from the DB. Can also return null
}
public int ListCount
{
get
{
if (settingsList == null)
return 0;
else
return settingsList.Count;
}
}
}
ListCount
用於檢查列表中是否有項目。我想知道給班上介紹'Any
'的方法。
public bool Any(Func<vpSettings, bool> predicate)
{
return settingsList !=null && settingsList.Cast<vpSettings>().Any(predicate);
}
問題是框架是否進行某種優化並保持項目的計數或迭代Arraylist以獲得計數?如上所述添加「Any」方法是否可取?在以下問題
馬克碎石建議使用任何的IEnumerable的
你可以顯示'GetSettings'嗎?至於這個例子,'IList'和'IDictionary'從'ICollection'派生。這是額外一層靈活性的好處之一。一個'數組'應該有更少的開銷並且更快。 – Greg
@ Greg .. GetSettings()完成一堆事情,並調用其他類中的方法最終從數據庫讀取數據。老實說代碼遍佈這個方法的地方。 – AlwaysAProgrammer