2010-09-13 4 views
1

Я хотел бы определить свой собственный псевдоним для сложного типа. Мне любопытно, почему компилятор не распознает уже импортированные типы. Например:Использование псевдонима с 'using'

работ:

using System; 
using System.Collections.Generic; 

using myCollection = System.Collections.Generic.List 
        <System.Collections.Generic.Dictionary<string, string>>; 

Ошибка:

using System; 
using System.Collections.Generic; 

using myCollection = List<Dictionary<string, string>>; 
+0

В C# нет typedef! –

+1

@Claus Jørgensen: Сложение с 'использованием' довольно близко. Вам просто нужно повторить его в каждом файле, так как нет '# include'. – dtb

+0

Да, но то, что он явно запрашивает, это typedef, а не псевдоним, чтобы получить сокращенное название пространства имен. Разница большая, даже разработчики C++ склонны злоупотреблять typedef тем, для чего это не предназначено. –

ответ

9

Попробуйте это:

using System; 
using System.Collections.Generic; 

namespace ConsoleApplication1 
{ 
    using myCollection = List<Dictionary<string, string>>; 
} 

using директивы не могут ссылаться на типы импортируемых в том же объеме. Вышеприведенный пример работает, поскольку последняя директива using относится только к типам, импортированным во внешнюю область.

+1

+1 Я знал, что использование smogло сделать aliasing, но никогда не думало об этом aliasing определенного типа как это, и scoping также новости. Хорошая информация! –

Смежные вопросы