'using Namespace'指令的说明

时间:2015-03-27 13:39:45

标签: c# namespaces

每当我在C#中开始一个新项目时,我都会得到以下结果:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

为什么using System;不允许您只使用一行的子命名空间?我正在寻找一个潜在的原因,为什么不允许这样做。在HuorSwords答案中给出的例子中:

namespace First {
    class A { }
}

namespace First.Second {
    class A { }
}

如果我这样做,我仍然会收到错误:

using First;
using First.Second;

function void Test()
{
     A variable;
}

我仍然需要区分两者。那么为什么我被迫声明两个命名空间而不仅仅是一个?除了潜在的歧义之外,还有其他原因我们必须像这样声明每个命名空间吗?

1 个答案:

答案 0 :(得分:1)

想想这种情况:

namespace First {
    class A { }
}

namespace First.Second {
    class A { }
}

如果行为可能与您的建议一致,那么当您引用First命名空间声明using First;句子并声明类A的变量时,编译器如何推断出什么是你应该使用两个A类吗?

您可以在不使用任何using句子的情况下引用任何类型,只需在声明变量时添加完整的命名空间引用。

var firstA = new First.A();
var secondA = new First.Second.A();

然后,当您尝试导入包含同名的类的两个或多个名称空间时,编译器会引发错误,以便您可以指定应使用的类。