Dictionary で外付けプロパティを ある程度C#を使っていれば必ず使うことになる、System.Collections.Generic.Dictionary 。C++で言うところの std::map コンテナに対応するコレクションです。 キーと値の対応付けが簡単に作れるので、既存のオブジェクトへの外付けプロパティ的な使い方をしたくなるのは当然と言えるでしょう。 こんな感じですね: var prop = new Dictionary<ICollection<object>, int>(); var hoge = new HashSet<int>(); var piyo = new List<int>(); prop[hoge] = 10; prop[piyo] = 20; Console.WriteLine(prop[hoge] + prop[piyo]); // 30 こんなの、ク