堆叠命名空间可以';不能像任何其他元素一样被引用
本文关键字:元素 其他 引用 一样 任何 命名空间 不能 | 更新日期: 2023-09-27 18:29:01
所以这里是我做的一个片段,其中一个命名空间在另一个命名空间中(B在a中)。通常当您使用"using SpaceA;"无需键入SpaceA即可访问所有图元。A类是这样的,但如果不键入SpaceA.SpaceB,我就无法看到SpaceB。为什么会这样?这是代码:
using System;
using SpaceA;
namespace SpaceA
{
class A
{
public A()
{
Console.WriteLine("A");
}
}
namespace SpaceB
{
public class B
{
public B()
{
Console.WriteLine("B");
}
}
}
}
namespace TestingCSharp
{
class Program
{
static void Main(string[] args)
{
//This does not work
SpaceB.B x = new SpaceB.B();
//This does work
SpaceA.SpaceB.B y = new SpaceA.SpaceB.B();
}
}
}
通常当您使用"using SpaceA;"无需键入SpaceA即可访问所有图元。
只有属于SpaceA
成员的直接类型。namespace-or-type-name
永远不会使用普通using
指令中的命名空间,然后使用名称中的另一个"亚命名空间"来解析。请注意,这与类型的声明方式无关(根据嵌套的命名空间声明或仅namespace SpaceA.SpaceB
)-另一个示例是:
using System;
...
Xml.Linq.XElement x = null; // Invalid
有关如何解析名称的详细信息,请参见C#5规范的第3.8节。
与此稍有不同的是,如果您有一个命名空间的using alias指令,则可以用于查找其他命名空间
using X = System.Xml;
...
X.Linq.XElement x = null; // Valid