2012-05-23 23 views
1

我目前正在構建一個依賴於效率的數據結構。c#列表方法:ElementAt(索引)與查找(內容)

任何人都可以提供有關Find(item => item.X = myObject.Property)方法實際工作方式的資源嗎? 它是否遍歷所有元素線性遍歷,直到找到元素?

如果我知道myObject的索引並使用ElementAt(索引)會怎麼樣?

哪個會是這兩個中最有效率的?

回答

6

MSDN documentation on List<T>.Find

此方法執行線性搜索;因此,此方法是O(n)操作,其中n是Count。

想象ElementAtIList優化,並會做一個直接的指標。但既然你顯然使用了這個來自List具體類型的對象,爲什麼不直接做一個直接索引呢?像這樣:

var result = list[index]; 

如果您已經知道該索引,則無需搜索。請直接前往它。

+3

ElementAt嘗試將集合轉換爲IList,如果成功則返回請求的索引處的元素。如果不是,它將使用枚舉器 – MStodd