我在一篇文章中看到了以下命名空间实现,我真的无法理解为什么他们这样做了?
using sysConfig =System.Configuration ;
string connectionString = sysConfig.ConfigurationManager.
ConnectionStrings["connectionString"].ConnectionString;
我知道它可以像这样轻松实现,
string connectionString = System.Configuration.ConfigurationManager.
ConnectionStrings["connectionString"].ConnectionString;
任何建议何时使用第一种类型...
答案 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)
使用命名空间别名的两个原因:
在您提供的示例中,我看不到其中的好处。它只会让阅读代码的人感到困惑。
答案 2 :(得分:1)
如果希望命名空间引用具有已定义的范围,则命名空间别名很好,与将使用引用放在类文件之上时的全局范围相反。
例如,如果您有一个使用System.IO
中的多个类的函数,并且您不希望该类的其他部分引用该命名空间,则只需将其作为命名空间别名应用于该函数内部。
Visual Studio中一个重要的受影响行为是智能感知。