C# is quite nit-picking when it comes to variable scoping. How is it possible that it accepts this code:
class Program { int x = 0; void foo() {
Because the rule is that if a conflict exists between a local variable and a class member, the local variable has higher precedence.