foreach 文

ここには、次に示す典型的な C# のイディオムが記述してあります。

    foreach (... kv in self) {
... kv ...
}

foreach ループでは、IDictionary self を構成する各要素 KeyValuePair kv を順に参照します。

    ret.AddNoLock(Tuple.MakeTuple(
kv.Key, // KeyValuePair.Key
kv.Value)); // KeyValuePair.Value

各要素 kv をもとに生成したタプルを、リスト ret に追加します。
ここでは、どのようにしてタプルが得られるか(how)は知らなくても、それを使ってなにをしたいか(what)を理解できれば、十分です。2つの要素(kv.Key, kv.Value)を持つタプルが欲しいときに、Tuple.MakeTuple を利用するだけです。