Вопрос по c# – Что это за директива C using?

13

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

<code>using StringFormat=System.Drawing.StringFormat;
</code>

О чем это все?

Чтобы помочь в предотвращении путаницы пространства имен Josh Stodola
В этом примере он «импортирует» имя класса StringFormat без остальных членов пространства имен System.Drawing. Brian Reiter

Ваш Ответ

6   ответов
1

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

using StringFormat=System.Drawing.StringFormat;

Использованный здесь способ немного необычен в C #, но более распространен в операторах импорта Java. Он предоставляет псевдоним StringFormat без импорта всего пространства имен System.Drawing. Некоторым людям, имеющим опыт работы с Java, нравится проактивно импортировать только используемые классы, а не целые anmespaces (или пакеты Java). Возможно, вы заранее избегаете потенциальных конфликтов имен, если импортируете только определенные имена классов, но это не очень распространено в C #, и 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 */
    }
}
3

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

using SQL = System.Data.SqlServer;

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

другой, не связанный 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 очищаетсяsome путаницы.

32

ет использоваться для псевдонимов пространств имен. Увидетьиспользование директивы.

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

@ noselasd: нет, это не обычная практика. Конечно, вы можете сделать это, если хотите, но я бы настоятельно рекомендовал это сделать, потому что это очень запутанно ... Было бы лучше создать класс DestinationMap, который наследуется от Dictionary & lt; string, Destination & gt;
Пространство имен / или псевдоним типа, если быть точным.
Это общепринятый способ назвать ваши собственные дженерики? например использование DestinationMap = System.Collections.Generic.Dictionary & lt; string, Destination & gt ;;
13

aliasс этого момента пользователь может использоватьStringFormat ссылаясь наSystem.Drawing.StringFormat, полезно, если вы не хотите использовать все пространство имен (например, в случае проблем с именами).

источник:используя директивную статью от MSDN

Я собирался сказать, что не имеет смысла использовать одно и то же имя, но, поскольку вы упомянули, что оно будет избегать включения всего пространства имен, оно имеет смысл. Без этого, остальные ответы являются неполными.
2

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

Похожие вопросы