A: 

Debug Visualizers don't work for arrays.

You can write a custom visualizer for an object of any managed class except for Object or Array. http://msdn.microsoft.com/en-us/library/e2zc529c.aspx

The visualized type has to be attributed [Serializable] or implement ISerializable. Arrays don't implement ISerializable and cannot be attributed. For some reason.

Lists work, though, so I sometimes make a new list<>, just for debugging purposes.

Spike
+1  A: 

For the most part what Spike says is true. You can write a visualizer for anything "except Object or Array": http://msdn.microsoft.com/en-us/library/e2zc529c.aspx

"Array" seems a little ambiguous; but there's lots of people with the same problem...

I haven't been able to find anything specific to this (and haven't tried it) but, what about IEnumerable? Does that work?

There's also an interesting article of getting around limitations on the types of objects a Visualizer can except here: http://joshsmithonwpf.wordpress.com/2008/01/20/the-rock-star-hack-of-2008/

Peter Ritchie
That's an interesting hack. I've never thought to try and create an object in the watch window. So you could write a visualizer for a List<DataRow>, and in the watch window you could watch "new List<DataRow>(yourDataRowArray)" and visualize that, with no code changes required. That's pretty tidy. Also, I have the vague recollection that a couple of years ago, when I was trying to write a visualiszer for double[], I tried IEnumerable and didn't get anywhere.
Spike
Which makes sense, since visualizers work on objects and interfaces aren't objects. I just tried Fish f = new Fish(); IFish if = f; and a visualizer Targeting Fish work on f and if, but one targeting IFish worked on neither.
Spike
A: 

Thank you very much guys for your replies. You confirmed what I was thinking (well, what I was coming to realize after four nights of fighting with it!). Thanks again. I blogged about it and referenced this information. Thank you very much for your time.

http://tinyurl.com/39cfd67

PHenry