[转载]c#使用foreach需要知道的
- C#
- 2012-03-12
- 100热度
- 0评论
[转载]c#使用foreach需要知道的 - smark - 博客园.
在c#中通过foreach遍历一个列表是经常拿用的方法,使用起来也方便,性能上也和for没有多大的差别;那为什么还要注意呢?我们先下来看下以下这句话:分 配的内存数量和完成测试所需的时间之间有直接关系。当我们单独查看的时候,内存分配并不是非常昂贵。但是,当内存系统只是偶尔清理不使用的内存时,问题就 出现了,并且问题出现的频率和要分配的内存数量成正比。因此,你分配越多的内存,对内存进行垃圾回收的频率就越频繁,你的代码性能就会变得越差。
从上面那些话可以看到内存的回收是非常损耗资源,那我们再看下一些.net内部类型的实现。
Array:
[csharp]
// System.Array
public IEnumerator GetEnumerator()
{
int lowerBound = this.GetLowerBound(0);
if (this.Rank == 1 && lowerBound == 0)
{
return new Array.SZArrayEnumerator(this);
}
return new Array.ArrayEnumerator(this, lowerBound, this.Length);
}
[/csharp]
List:
[csharp]
// System.Collections.Generic.List
public List.Enumerator GetEnumerator()
{
return new List.Enumerator(this);
}
[/csharp]
Dictionary:
[csharp]
// System.Collections.Generic.Dictionary
public Dictionary.Enumerator GetEnumerator()
{
return new Dictionary.Enumerator(this, 2);
}
[/csharp]

改成for的结果又怎样呢
