2010-09-13 6 views
1

Je voudrais définir mon propre alias pour le type complexe. Je suis curieux de savoir pourquoi le compilateur ne reconnaît pas les types déjà importés. Par exemple:Utilisation de l'alias avec 'using'

Travaux:

using System; 
using System.Collections.Generic; 

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

Erreur:

using System; 
using System.Collections.Generic; 

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

Il n'y a pas de typedef en C#! –

+1

@Claus Jørgensen: Aliasing avec 'using' est assez proche. Vous avez juste besoin de le répéter dans chaque fichier puisqu'il n'y a pas de # include. – dtb

+0

Oui, mais ce qu'il demande explicitement est un typedef, pas un alias pour obtenir un raccourci pour un espace de noms. La différence est grande, même les développeurs C++ ont tendance à abuser typedef pour ce qu'il n'est pas destiné. –

Répondre

9

Essayez ceci:

using System; 
using System.Collections.Generic; 

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

directives using ne peuvent pas se référer à des types importés dans la même portée. L'exemple ci-dessus fonctionne, car la dernière directive using ne fait référence qu'aux types importés dans une étendue externe.

+1

+1 Je savais que l'utilisation pouvait faire du crénelage, mais je ne pensais jamais à l'aliasing d'un type spécifique comme celui-ci, et le scoping est aussi une nouvelle. Bonne info! –