Когда использовать "using [alias =] class_or_namespace;"в с #? - PullRequest
2 голосов
/ 16 июня 2010

Я видел следующую реализацию пространства имен в статье, и я действительно не могу понять, почему они это сделали?

using sysConfig =System.Configuration ;

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

Я знаю, что это легко реализовать,

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

Любое предложение, когда использовать первый тип ...

Ответы [ 3 ]

4 голосов
/ 16 июня 2010

Допустим, вы хотите использовать библиотеку, которая содержит класс с именем "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;
    }
}

Хотя в вашем примере цель, очевидно, заключается в наборе меньшего количества пространств имен.

3 голосов
/ 16 июня 2010

Две причины использования псевдонимов пространства имен:

  1. Для разрешения конфликтов между пространствами имен
  2. Чтобы сделать код более читабельным (более короткие имена пространства имен)

В приведенном вами примере я не вижу выгоды. Это просто сбивает с толку человека, читающего код.

1 голос
/ 16 июня 2010

Псевдонимы пространства имен хороши, когда вы хотите, чтобы ссылки на пространства имен имели определенную область, в отличие от глобальной области, когда вы помещаете свои ссылки на использование поверх файла класса.функция, которая использует несколько классов из System.IO, и вы не хотите, чтобы другие части класса ссылались на пространство имен, вы просто применяете ее внутри функции как псевдоним пространства имен.

Одно важное уязвимое поведение вVisual Studio - это Intellisense.

...