Действительно ли возможно объявить псевдоним с типом .NET?

Действительно ли возможно объявить псевдоним с типом .NET? в c# и раз так как?

16
задан citronas 20 February 2010 в 15:51
поделиться

5 ответов

Например:

using MatchBuilderFactoryFunc = System.Func<
    IndexerBase.RequestMatching.RequestFreeTextAnalyzeParameter,
    System.Collections.Generic.IEnumerable<
        IndexerBase.RequestMatching.IMatchBuilder>>;

И после всего использовать его как простой тип:

MatchBuilderFactoryFunc f = ...
21
ответ дан 30 November 2019 в 15:17
поделиться
using XDoc = System.Xml.Linq.XDocument;

Однако, он сохраняется только для компиляции одного файла C#. Вы не можете экспортировать этот псевдоним.

4
ответ дан 30 November 2019 в 15:17
поделиться

Да, using может это сделать

using q = System.Int32;
1
ответ дан 30 November 2019 в 15:17
поделиться

Как говорили другие, используйте "using alias = type;" форма директивы using.Пара замечаний по этому поводу:

1) Это должно быть первое, что есть в файле или пространстве имен. (Если, конечно, у вас нет директив extern alias ; они идут перед директивами using.)

2) Псевдоним не является истинным типом. Многие люди хотели бы видеть:

using PopsicleCount=System.Int32;
using GiraffeCount=System.Int32;
...
PopsicleCount p = 123;
GiraffeCount g = p; // ERROR, can't convert a count of giraffes into a count of popsicles

Но мы не поддерживаем эту функцию. Это настоящий псевдоним; мы просто заменяем псевдоним идентификатора типом alising, когда видим его; p и g имеют тип int.

3) Псевдоним применяется только в том файле или объявлении пространства имен, в котором он появляется. Если вы хотите использовать псевдоним в каждом файле в вашей программе, вам придется записать его в каждый файл в вашей программе.

4) Псевдонимы не могут быть параметризованы на стороне псевдонима, хотя они могут быть закрытыми универсальными типами на стороне типа. То есть это допустимо:

using GiraffeList = System.Collections.Generic.List<Giraffe>;

, но не:

using Frobtionary<T> = System.Collections.Generic.Dictionary<Frob, T>;
35
ответ дан 30 November 2019 в 15:17
поделиться

Да. Используйте директиву using .

Если вы выполните поиск по термину "c# alias", вы также легко найдете ответ.

1
ответ дан 30 November 2019 в 15:17
поделиться
Другие вопросы по тегам:

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