所以这里是一个片段,我在另一个内部的一个命名空间(B在A里面)。 通常在您使用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();
}
}
}
答案 0 :(得分:2)
通常当您使用'使用SpaceA;'时您无需键入SpaceA即可访问所有元素。
仅SpaceA
成员的直接类型。永远不会使用普通namespace-or-type-name
指令中的命名空间和名称中的另一个“子名称空间”来解析using
。请注意,这与声明类型的方式无关(就嵌套命名空间声明或namespace SpaceA.SpaceB
而言) - 另一个例子是:
using System;
...
Xml.Linq.XElement x = null; // Invalid
有关如何解析名称的详细信息,请参阅C#5规范的第3.8节。
与轻微的区别在于,如果您对命名空间使用alias指令,那么可以用于查找其他命名空间
using X = System.Xml;
...
X.Linq.XElement x = null; // Valid