Q:

What is the specificity of var?

So, as far as a question to a real problem goes, this probably isn't a very good question, but it's bugging me and I can't find an answer, so I consider that to be a problem.
What is the specificity of var? The MSDN reference on it states the following:

An implicitly typed local variable is strongly typed just as if you had declared the type yourself

Bur it doesn't seem to say anywhere what type it is strongly typed for. For example, if I have the following:
var x = new Tree();

But I then don't call any methods of Tree, is x still strongly typed to tree? Or could I have something like the following?
var x = new Tree();
x = new Object();

I'm guessing this isn't allowed, but I don't have access to a compiler right now, and I'm really wondering if there are any caveats that allow unexpected behaviour like the above.

A:

It's strongly typed to the type of the expression on the right side:

The var keyword instructs the compiler to infer the type of the variable from the expression on the right side of the initialization statement.

From here.

A:

It's tied to the type on the right-side of the equals-sign, so in this case, it is equivalent to:
Tree x = new Tree();

Regardless of whatever interface or base classes are tied to Tree. If you need x to be of a lower type, you have to declare it specifically, like:
Plant x = new Tree();
// or
IHasLeaves x = new Tree();

