For both the Watch and Immediate windows in Visual Studio, the string returned by ToString() for an object will be used.
So you can override ToString() if you want and format the human-readable representation of any of your classes so that they display the information you need in the Watch or Immediate windows during debugging activities.
For example,
public class Foo
{
public String Bar { get; set; }
private Int32 _intValue;
public Int32 Value { get { return _intValue; } }
override public ToString()
{
return "Bar: " + Bar + " has Value: " + Value;
}
}
So now if you create an array of Foo objects named fooArray, typing ? fooArray in the Immediate window will list all the Foo objects with the ToString() return value for each in curly braces. Something like this:
? fooArray
{Foo[2]}
[0]: {Bar: hi has Value: 1}
[1]: {Bar: there has Value: 2}