Что это за С# директива "using"?

Я видел этот оператор С# в примере кода:

using StringFormat=System.Drawing.StringFormat;

Что это значит?

Ответы

Ответ 1

Это наложение имени типа на более короткое имя. Тот же синтаксис также может использоваться для псевдонимов пространств имен. См. с помощью директивы.

(Обновлено в ответ Ричарду)

Ответ 2

Теперь с псевдоним пользователь может использовать StringFormat для ссылки на System.Drawing.StringFormat. Это полезно, если вы не хотите использовать все пространство имен (например, в случае проблем с конфликтом имен).

source: с использованием статьи директивы из MSDN

Ответ 3

Возможно, другой, несвязанный StringFormat объявлен в другом пространстве имен, таком как Acme.Stuff. Если это так, это может вызвать путаницу:

using System.Drawing; // Contains StringFormat type.
using Acme.Stuff;  // Contains another StringFormat type.

private void Foo()
{
    StringFormat myFormat = new StringFormat(); // which one to use?
}

Алиасинг с с использованием в StringFormat = System.Drawing.StringFormat устраняет некоторые путаницы.

Ответ 4

Это определит псевдоним для System.Drawing.StringFormat.

То же самое, что и в этом примере:

using SQL = System.Data.SqlServer;

SQL.SqlConnection sql = new SQL.SqlConnection();

Ответ 5

Это означает, что вы используете StringFormat в качестве псевдонима для System.Drawing.StringFormat;

Ответ 6

Это псевдоним для пространства имен

Ответ 7

Ключевое слово using используется для импорта пространств имен или классов псевдонимов или для управления областью на одноразовых объектах. Здесь мы говорим об использовании пространства имен.

using StringFormat=System.Drawing.StringFormat;

Способ использования здесь был немного необычным в С#, но более распространенным в операторах импорта Java. То, что он делает, это предоставить псевдоним StringFormat без импорта всего пространства имен System.Drawing. Некоторые люди с фоном Java, как и proactvely, импортируют только используемые классы, а не целые anmespaces (aka Java-пакеты). Возможно, вы активно избегаете конфликтов имен, если импортируете только определенные имена классов, но это не очень распространено в С#, а Visual Studio не поощряет его, скажем, Netbeans для Java.

Более распространенное использование псевдонимов - это разрешить имена классов сокращенному псевдониму, когда есть конфликт имен.

using System.Drawing;
using AwesomeCompany.ReallyAwesomeStuff.AwesomeLibrary.Drawing;
/* AwesomeCompany.ReallyAwesomeStuff.AwesomeLibrary.Drawing has a StringFormat class */
using AwesomeStringFormat = AwesomeCompany.ReallyAwesomeStuff.AwesomeLibrary.Drawing.Stringformat;
using StringFormat = System.Drawing.StringFormat;

public class AwesomeForm() : Form
{
    private AwesomeForm()
    {
        AwesomeStringFormat stringFormat = new AwesomeStringFormat();
        stringFormat.Color = Color.Red;
        /* etc */
    }
}