Using a variable name used in a child scope
<p>I've been wondering why in C# using a variable name used previously in a child scope is not allowed. Like this:</p>

<pre><code>if (true)
{
    int i = 1;
}

int i = 2;
</code></pre>

<p>Compiling the above code produces an error: </p>

<blockquote>
  <p>A local variable named 'i' cannot be
  declared in this scope because it
  would give a different meaning to 'i',
  which is already used in a 'child'
  scope to denote something else</p>
</blockquote>

<p>And yet you can't use the variable defined in child scope either. The code above works just fine in Java and I can see no reason why it doesn't in C# too. I'm sure there's a good reason, but what is it?</p>
