在C#中使用命名空间别名有什么好处?

时间:2010-02-24 10:08:22

标签: c# namespaces

使用命名空间别名有什么好处?它只对简化编码有用吗?

7 个答案:

答案 0 :(得分:9)

只有在与类冲突时才使用命名空间别名。 对我来说,根本不是简化。 我的意见:如果没有必要,不要使用它。

答案 1 :(得分:6)

正如其他人所说,当你必须同时导入多个名称空间时,它对消除类型的歧义很有用。

这似乎违背了其他人的意见,但它也可能有助于澄清两个域之间的范围:

using Gilco.Test.ProjectX;
using DevCode = Gilco.Nilfum.Alpha.ProjectX;

public class MyTests
{
    public void TestCase1()
    {
        var car = new DevCode.Car();
        var testCar = new TestCar();
    }
}

在极少数情况下,当您必须指定命名空间(用于消除歧义)时,它可能也很有用,您的命名空间不是很长,以证明别名的合理性,但很可能很快就会改变(就像您使用命名空间时一样)同时支持两个版本的代码路径):

using DevCode = Gilco.V1;

答案 2 :(得分:5)

当你遇到冲突时,它们很有用。例如,如果您有类型NamespaceA.JobberNamespaceB.Jobber,并且想要在同一个类中使用它们,那么您将无法为NamespaceA和NamespaceB添加using语句,因为如果你输入Jobber,编译器就不会知道你所指的是什么。在这种情况下,您将为一个或两个命名空间提供别名。

这可以使您的代码更清晰,尤其是在命名空间很长的情况下,因为替代方法是每次使用类型时都写出整个命名空间。

答案 3 :(得分:4)

如果类型名称冲突,使用别名将使您不必使用完全限定名称。例如,名称TextBox用于以下两个名称空间。

System.Windows.Forms.TextBox
System.Web.UI.WebControls.TextBox

依赖于using声明的顺序会相当脆弱,只会对其中一个命名空间有所帮助。更好的方法是为每个命名空间分配一个别名。

答案 4 :(得分:1)

命名空间别名对于解决代码中具有相同名称的两个或多个类的歧义非常有用。例如,你的winform中有Button类,你的第3个库也有一个Button类。当您的代码引用Button时,您可能希望将其量化为来自第三方而不想在任何地方放置完整的长文本而是使用别名using CompanyX = CompanyX.UI.Animated.Control ... CompanyX.Button

事实上,我只是在工作项目中使用它,以使我的代码更具可读性。我使用Office Word自动化,而不是让变量Application定义到任何地方并且很难将它与我的实际Application类区分开来,我定义使用Word=Microsoft.Office.Interop.Word并在代码中我可以说Word.Application来引用Word应用程序对象

答案 5 :(得分:0)

在使用两个具有相同名称的类时,我通常只使用命名空间别名。

答案 6 :(得分:0)

afaik创建名称空间别名时 - 每个别名的静态变量值是它自己的而不依赖于其他别名 +简化