The first code drop for Power Collections is now available here. The ZIP file includes a binary DLL and source code.

So far, there is only one usable collection: OrderedDictionary, which I've been blogging about for the past couple of weeks. The code is mostly feature complete, and there are NUnit tests for almost everything that should ensure that it is in fairly working state.

There are a couple of other public classes: DictionaryBase and CollectionBase. These are helper classes that I found very useful to create -- they are abstract base classes that implement most of the “grunge work” in ICollection/ICollection<T> (for CollectionBase) and IDictionary/IDictionary<K,V> (for DictionaryBase). 

You'll also notice that OrderedDictionary uses an internal class, RedBlackTree, that has the meat of the balance binary tree algorithm. RedBlackTree will also be used in other collections, such as OrderedSet and OrderedBag. Abstracting it out into its own class allowed me to most easily share implementation, and also test these basic algorithms without worrying about all the other stuff built around it.

Unfortunately, the only documentation right now is in the form of comments in the source code. I know that this is not a good state of affairs, and I'm glad to day that I've mostly managed to hack NDoc to get some OK documentation. Subsequent drops will have a help file included.

If you want to try using this, you need to use Beta 1 of C# Express or Visual Studio 2005. It's probably obvious to most of you, but Visual Studio 2003 will not work with Power Collections, because we are using generics heavily, which is a VS 2005 feature.

C# Express works great with Power Collections, by the way, and it is completely free -- get it here. In fact, it works so well I haven't yet bothered to download install the full Visual Studio 2005 Beta 1; Power Collections has been developed entirely with C# Express so far.

I hope to be doing code drops every week or two, so there is lots more code to come soon. Let us know what you think of it so far and how to improve it!