從0循環到列表的末尾(列表或地圖)以及從末端循環到0的場景,有哪些場景?以下是從0到最後遍歷列表的代碼片段,以篩選出一些特定的學生名稱。這段代碼是否會在任何情況下拋出異常?從列表末尾迭代到零對這段代碼有什麼影響嗎?何時從0循環到結束以及何時從結束循環到0?
List<Dictionary<string, string>> allStudentsList = allStudentsArray.ToList();
for (int i = 0; i < allStudentsList .Count-1; i++) {
Dictionary<string, string> student= allStudentsList .ElementAt(i);
string studentName;
bool hasValue = studentName.TryGetValue("id", out studentName);
if (hasValue) {
if (studentName.StartsWith("John") {
allStudentsList.RemoveAt(i);
i--;
}
}
}
把它作爲評論,因爲它與你的問題沒有關係,但你應該用列表中的索引代替elementat(i)。ElementAt是一個linq運算符,因此它或者爲列表進行了優化(並且只是添加了一個方法開銷),要麼它沒有列表特定的路徑,然後導致巨大的減速,因爲它需要每次迭代整個列表直到查找元素的索引。 –