2010-06-16 48 views
2

我在文章中看到了下面的命名空间实现,我真的不明白为什么他们这样做了?何时使用“using [alias =] class_or_namespace;”在C#中?

using sysConfig =System.Configuration ; 

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

我知道它可以这样很容易实现,

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

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

回答

3

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

  1. 解决命名空间之间的冲突
  2. 至m ake代码更具可读性(更短的命名空间名称)

在您提供的示例中,我没有看到好处。它只是混淆了阅读代码的人。

1

当您希望名称空间引用具有已定义的作用域时,命名空间别名是很好的,与将全局作用域放在类文件顶部时的全局作用域相反。

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

Visual Studio中一个重要的受影响行为是Intellisense。

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; 
    } 
} 

虽然在你的榜样,目的显然是打字少的命名空间。