何时使用“using [alias =] class_or_namespace;”在c#?

时间:2010-06-16 10:50:38

标签: c# namespaces implementation

我在一篇文章中看到了以下命名空间实现,我真的无法理解为什么他们这样做了?

using sysConfig =System.Configuration ;

string connectionString = sysConfig.ConfigurationManager.
                         ConnectionStrings["connectionString"].ConnectionString;

我知道它可以像这样轻松实现,

string connectionString = System.Configuration.ConfigurationManager.
                         ConnectionStrings["connectionString"].ConnectionString;

任何建议何时使用第一种类型...

3 个答案:

答案 0 :(得分:4)

假设您要使用包含名为“Lib.IO.File”的类的库。但是你也想使用System.IO.File。这会导致问题:

using System.IO;
using Lib.IO;
class Program
{
    static void Main(string[] args)
    {
        File f; // ambiguous type! which File class do you mean?
    }
}

在这种情况下,你可以这样做:

using Sys = System.IO;
using Lib = Lib.IO;
class Program
{
    static void Main(string[] args)
    {
        Sys.File f1;
        Lib.File f2;
    }
}

虽然在您的示例中,目的显然是键入较少的命名空间。

答案 1 :(得分:3)

使用命名空间别名的两个原因:

  1. 解决名称空间之间的冲突
  2. 使代码更具可读性(更短的命名空间名称)
  3. 在您提供的示例中,我看不到其中的好处。它只会让阅读代码的人感到困惑。

答案 2 :(得分:1)

如果希望命名空间引用具有已定义的范围,则命名空间别名很好,与将使用引用放在类文件之上时的全局范围相反。

例如,如果您有一个使用System.IO中的多个类的函数,并且您不希望该类的其他部分引用该命名空间,则只需将其作为命名空间别名应用于该函数内部。

Visual Studio中一个重要的受影响行为是智能感知。