我正在查看某些System.Collections.Concurrent
类(Framework 4.0)的反编译源代码。我在很多地方看到这样的代码:
for (int index = 0; index < buckets.Length; ++index)
{
for (
ConcurrentDictionary<TKey, TValue>.Node node1 = buckets[index];
node1 != null;
{
ConcurrentDictionary<TKey, TValue>.Node node2;
node1 = node2;
})
{
node2 = node1.m_next;
int bucketNo;
int lockNo;
this.GetBucketAndLockNo(
node1.m_hashcode,
out bucketNo,
out lockNo,
nodeArray.Length);
nodeArray[bucketNo] = new ConcurrentDictionary<TKey, TValue>.Node(
node1.m_key,
node1.m_value,
node1.m_hashcode,
nodeArray[bucketNo]);
checked { ++numArray[lockNo]; }
}
}
有人可以解释for-iterator的情况吗? (我的意思是那篇文章
{
ConcurrentDictionary<TKey, TValue>.Node node2;
node1 = node2;
}
我查看了4.0的C#语言规范,但老实说,他不具备阅读这些内容的技能,并且非常感谢有人能提供的清晰度,特别是在这种功能成为可能的语言版本中。