【问题标题】:C# using NamesSpacesC# 使用命名空间
【发布时间】:2014-07-17 19:21:50
【问题描述】:
File 1
namespace ivandro.ismael.gomes
{
    class MyClass1
    {
        MyClass obj = new MyClass();
    }
}
File 2
namespace ivandro.ismael
{
    class MyClass
    {
    }
}

注意:MyClassMyClass1 可见,不用说使用ivandro.ismael,但如果你说using System.Text,则只有System.Text 中的类型可见,System 中的类型不可见 你知道为什么吗?!

【问题讨论】:

标签: c# class types namespaces


【解决方案1】:

这是因为 namespace 块内的代码的行为与仅放置 using 语句不同。您可以像下面这样可视化您的 MyClass1 代码。

namespace ivandro
{   
    namepace ismael
    {
        namepsace gomes
        {    
             class MyClass1
             {
                 MyClass obj = new MyClass();
             }
        }           
    }
}

所以当你在一个命名空间内时,所有通往该命名空间的层级也都包括在内。

【讨论】:

  • 嗨,Scott,有没有参考网站可以检查它在内部是如何工作的?我现在很好奇看看内部逻辑是否有:P
  • 我不知道确切的位置,但它在某处列出了in the C# spec
  • @ScottChamberlain 这是因为namespace ivandro.ismael.gomes 实际上被编译为namespace ivandro { namespace ismael { namespace gomes { ... } } }。无需可视化,因为这意味着在内部命名空间范围内的类也在外部命名空间范围内。我会建议你编辑你的答案。
  • @ShlomiBorovitz 感谢您的澄清,我已经更新了答案。
  • 谢谢@ScottChamberlain :)
猜你喜欢
  • 2010-12-23
  • 2011-07-15
  • 1970-01-01
  • 2011-01-02
  • 2012-01-18
  • 2011-05-05
  • 2011-03-13
  • 2010-09-27
相关资源
最近更新 更多