1
我目前正在構建一個依賴於效率的數據結構。c#列表方法:ElementAt(索引)與查找(內容)
任何人都可以提供有關Find(item => item.X = myObject.Property)方法實際工作方式的資源嗎? 它是否遍歷所有元素線性遍歷,直到找到元素?
如果我知道myObject的索引並使用ElementAt(索引)會怎麼樣?
哪個會是這兩個中最有效率的?
我目前正在構建一個依賴於效率的數據結構。c#列表方法:ElementAt(索引)與查找(內容)
任何人都可以提供有關Find(item => item.X = myObject.Property)方法實際工作方式的資源嗎? 它是否遍歷所有元素線性遍歷,直到找到元素?
如果我知道myObject的索引並使用ElementAt(索引)會怎麼樣?
哪個會是這兩個中最有效率的?
從MSDN documentation on List<T>.Find
此方法執行線性搜索;因此,此方法是O(n)操作,其中n是Count。
我想象是ElementAt
爲IList
優化,並會做一個直接的指標。但既然你顯然使用了這個來自List
具體類型的對象,爲什麼不直接做一個直接索引呢?像這樣:
var result = list[index];
如果您已經知道該索引,則無需搜索。請直接前往它。
ElementAt嘗試將集合轉換爲IList,如果成功則返回請求的索引處的元素。如果不是,它將使用枚舉器 – MStodd