2
哪种方法更快或者是否都编译为相同的IL?Foreach循环,在循环语句之外派生迭代集合会更快吗?
var myCollection = new Dictionary<string, string>(){{"a", "aa"}, {"b", "bb"}, {"c", "bb"}};
foreach (var uniqueItem in myCollection.Values.Distinct())
{
//do something
}
var myCollection = new Dictionary<string, string>() { { "a", "aa" }, { "b", "bb" }, { "c", "bb" } };
var uniqueItems = myCollection.Values.Distinct();
foreach (var uniqueItem in uniqueItems)
{
//do something
}
在IL中,无论迭代次数如何,调试模式下的额外赋值都会进行一次? –
是的,它将* myCollection.Values.Distinct()*的值存储在堆栈上,而无需再次调用该方法。 – Elisha
非常感谢... –