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

mas*_*ani 16 c# namespaces

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

gsh*_*arp 9

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


Sco*_*nro 6

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

System.Windows.Forms.TextBox
System.Web.UI.WebControls.TextBox
Run Code Online (Sandbox Code Playgroud)

依赖 using 声明的顺序将是相当脆弱的,并且只会对命名空间之一有所帮助。更好的是为每个命名空间分配一个别名。


Mer*_*ham 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();
    }
}
Run Code Online (Sandbox Code Playgroud)

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

using DevCode = Gilco.V1;
Run Code Online (Sandbox Code Playgroud)


Gra*_*ark 5

当你遇到冲突时,它们很有用.例如,如果您有类型的NamespaceA.JobberNamespaceB.Jobber,并希望在同一个类中使用他们两个,你将不能够只添加using了NamespaceA和NamespaceB声明,因为那样的话,编译器将不知道你指的是什么,如果你输入Jobber.在这种情况下,您将为一个或两个命名空间提供别名.

这可以使您的代码更清晰,特别是如果命名空间很长,因为替代方法是每次使用类型时都写出整个命名空间.