title: C# namespace structure forcing me to use alias
body: <p>I'm playing around with namespaces and faced a problem I can't really understand.</p>
  
  <p>My namespace structure in a given class library is as follows:</p>
  
  <pre><code>Namespace History
  Namespace History.Antiquity
  Namespace History.Antiquity.East
  Namespace History.Antiquity.West
  </code></pre>
  
  <p>When inside the source file that declares the namespace History, I can't use any of the types defined under <code>History.Antiquity.East</code> or <code>History.Antiquity.West</code> without fully qualifying them, or without qualifying them starting with "Antiquity".</p>
  
  <p><strong>Example Code:</strong></p>
  
  <p>The following for instance, gives me a compile-time error (assuming the type "Persia" is defined in History.Antiquity.East):</p>
  
  <pre><code>using History.Antiquity;
  
  namespace History
  {
      public class foo
      {
          public foo()
          {
              East.Persia.Conquer(); // error!
          }
      }
  
  } 
  </code></pre>
  
  <p>I need to either fully qualify Persia, or qualify it starting from Antiquity. Alternatively, I can introduce an alias:</p>
  
  <pre><code>using East = History.Antiquity.East;
  </code></pre>
  
  <p><strong>Actual question:</strong></p>
  
  <p>What I can't seem to understand is why is there a problem with this namespace structure. How can it be that .Net finds it conflicting?</p>