万年素人からHackerへの道

万年素人がHackerになれるまで殴り書きするぜ。

IDictionaryでkey, valueを回す C#

DictionatyではないIDictionaryにてkeyとvalueの確認をしたい

        foreach (KeyValuePair<object, object> kvp in dictionary) {
            sb.Append (string.Format ("Key = {0}, Value = {1}\n", kvp.Key, kvp.Value));
        }

キャストが駄目。

じゃあ一旦普通のインターフェイスではないDictionaryにasしてこんな感じに回したら

        foreach (KeyValuePair<object, object> kvp in dictionary as Dictionary<string, object>) {
            sb.Append (string.Format ("Key = {0}, Value = {1}\n", kvp.Key, kvp.Value));
        }
Object Reference not set to instance of an object

https://msdn.microsoft.com/ja-jp/library/system.collections.idictionary(v=vs.110).aspx を見るよ・・・。

each C# 言語のステートメント (For Each Visual Basic で)、コレクション内の要素の型のオブジェクトを返します。 各要素から、 IDictionary オブジェクトは、キー/値ペアで要素型は、キーの型または値の型ではありません。 代わりに、要素型は DictionaryEntryです。

って・・。

        foreach (KeyValuePair<object, object> kvp in dictionary as Dictionary<string, object>) {
            sb.Append (string.Format ("Key = {0}, Value = {1}\n", kvp.Key, kvp.Value));
        }

いけた!!!