ソースコード:items()
(メソッド dict.items に相当する)メソッド items の定義を含む、ソースコードの断片を次に示します。
# IronPython-1.1.2/Src/IronPython/Runtime/Dict.cs
[PythonType("dict")]
public class Dict : ... IDictionary
メソッド Items では、メソッド DictOps.Items の実引数に、this を指定しています。これは、内部クラス DictOps ですべての操作を実現しているので、それに自身 this の処理を委ねるためです。このとき(Dict のインスタンス)this は、インターフェース IDictionary の規定に従うものとします。さらに、IDictionary を構成する各要素は、ジェネリック構造体 KeyValuePair の規定に従うものとします。
《参照》ジェネリック構造体 KeyValuePair:詳細は、http://msdn.microsoft.com/ja-jp/library/5tbh8a42.aspx を参照してください。
internal static class DictOps {
...
public static List Items(IDictionary
静的メソッド Items では、変数 ret がリターン値を扱うために、空の(必要な領域を確保した)リスト List を保持します。すると、次のような構造が見えてきます。
List ret = ... self.Count ... // IDictionary.Count
...
return ret;
プロパティー IDictionary.Count を利用しているのが分かります。
ここでは、どのようにしてリストが得られるか(how)は知らなくても、それを使ってなにをしたいか(what)を理解できれば、十分です。self.Count 個の要素を保持するリストが欲しいときに、List.MakeEmptyList を利用するだけです。