I think this an interesting way to make vivid what object/Object in .NET is: in VisualStudio in .NET: put something like this in code somewhere, set a breakpoint, then compile and run, and examine the values:
bool intValue = 32 is object;
bool stringValue = "hello" is object;
And notice that Intellisense will give you a pre-compile message pop-up over the right side of the equal operator that this expression is always true.
Ask yourself:
what must be true if every .NET Type is-a object ?
Whoops: did I say 'every:' then ask yourself what it means that
bool nullValue = null is object;
So, 'null' is not an object !
You want to get fancy: what about nullable types ? What do you think happens:
int? myNullInt = null;
bool nullableType = myNullInt is object;
If you wanted to get philosophical, perhaps you might paraphrase Pascal, and say: "object/Object in .NET is that Type whose center is everywhere, and whose circumference is nowhere." With "nowhere" equal to null :)