internal static class DictOps {
public static void Update(IDictionary
静的メソッド Update では、引数 b が、インターフェース IDictionary の規定に従うかどうかで、後の処理を振り分けます。すると、次のような構造が見えてきます。
IDictionary dict = b as IDictionary; if (dict != null) { // IDictionary の規定に従う
...
} else if (...) {
// user defined dictionary
...
} else {
// list of lists (key/value pairs), list of tuples,
// tuple of tuples, etc...
...
}
if に続く条件式 dict != null が成立するなら、インターフェース IDictionary で規定したプロトコルに従って、dict を処理します。それ以外は、工夫が必要です。2番目の if ブロックについては、別の記事「利用者定義の辞書を扱う」で解説するので、ここでは割愛します。